c#
  • asp.net
  • 2013-04-10 4 views 2 likes 
    2

    개체 CRMID가 null 일 수있는 문자열 인 경우에만 특정 항목 템플릿을 표시하려고합니다. 이 null의 경우부울을 평가하는 중 오류가 발생 했습니까?

    나는이 항목 템플릿을 보여주고 싶어하지 않습니다

    나는 다음과 같은 오류 얻을 그러나
     <asp:TemplateField HeaderText=""> 
           <ItemTemplate> 
           <a href="#myModal" id='rm_btn' runat="server" role="button" class="close custom-close" onclick="showModal('#myModal')" onserverclick="rmbtn" 
            visible='<%# (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" %>'> 
            ×</a> 
           </ItemTemplate> 
          </asp:TemplateField> 
    

    :

    Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 
    
    Compiler Error Message: CS0030: Cannot convert type 'string' to 'bool' 
    
    Source Error: 
    
    
    Line 136:    <asp:TemplateField HeaderText=""> 
    Line 137:     <ItemTemplate> 
    Line 138:     <a href="#myModal" id='rm_btn' runat="server" role="button" class="close custom-close" onclick="showModal('#myModal')" onserverclick="rmbtn" 
    Line 139:      visible='<%# (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" %>'> 
    Line 140:      ×</a> 
    

    을 내가 뭘 잘못 모르겠습니다 .. .

    감사

    +1

    값에서 따옴표를 제거하려고 했습니까? "true": "false"'->'? true : false'. 이 문제를 해결할 수있는 다른 방법이 있습니다. 테스트 할 수는 없지만 아래 답변에서 컴파일했습니다. – Alex

    +0

    지금 당장 true/false를 문자열로 보냅니다. C#을 자바 스크립트처럼 부울 값으로 직접 변환 할 수는 없습니다. 저의 첫 번째 생각은'가시적 인 '과제에서 그들로부터 따옴표를 제거하는 것입니다. – krillgar

    답변

    4

    당신은 O를 직접 "true"을 변환하려고 r "false" 즉. 을 bool 값으로 설정하십시오. 따라서 문자열 대신 true/ false을 사용해보세요.

    visible='<%# (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? true : false %>'> 
    
    1

    나는 여러 가지 시도를 제안 할 수 있습니다 :

    는 따옴표를 제거

    // BEFORE 
    (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" 
    
    // AFTER 
    (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? true : false 
    

    또는 bool.Parse 그것을

    // BEFORE 
    (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" 
    
    // AFTER 
    bool.Parse((DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false") 
    

    또는 똑바로 체크를 제거

    // BEFORE 
    (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" 
    
    // AFTER 
    (DataBinder.Eval(Container.DataItem, "CRMID") == null) /* this is a bool already*/ 
    
    관련 문제