检查剃刀语法上的值 null

check for value null on razor syntax

以下代码失败,因为 propiedadesFormularioDetalle 为空。 我在块代码之前放置了一个 IF 但仍然无法正常工作,如果我删除其中一个括号,则它不会编译

  @if (propiedadesFormularioDetalle != null) { }
                        <div class="panel panel-default">
                            <div class="panel-heading">Propiedades adicionales</div>
                            <div class="panel-body">
                                <dl class="dl-horizontal">
                                    @foreach (KeyValuePair<string, string> propiedad in propiedadesFormularioDetalle)
                                    {

                                        <dt>
                                            @Html.DisplayName(propiedad.Key)
                                        </dt>

                                        <dd>
                                            @Html.DisplayFor(prop => propiedad.Value)
                                        </dd>

                                    }
                                </dl>
                            </div>      
                        }                 
                    </div>

试试这个:

 @{ 
if (propiedadesFormularioDetalle != null) { 
                        <div class="panel panel-default">
                            <div class="panel-heading">Propiedades adicionales</div>
                            <div class="panel-body">
                                <dl class="dl-horizontal">
                                   foreach (KeyValuePair<string, string> propiedad in propiedadesFormularioDetalle)
                                    {

                                        <dt>
                                            Html.DisplayName(propiedad.Key)
                                        </dt>

                                        <dd>
                                            Html.DisplayFor(prop => propiedad.Value)
                                        </dd>

                                    }
                                </dl>
                            </div>      
                        }                 
                    </div>
}

您已关闭 if 条件,并在最后一个 div 之前放置了一个额外的右大括号。这应该是正确的:

@if (propiedadesFormularioDetalle != null) 
{ //} - remove this closing curly brace
    <div class="panel panel-default">
        <div class="panel-heading">Propiedades adicionales</div>
        <div class="panel-body">
            <dl class="dl-horizontal">
                @foreach (KeyValuePair<string, string> propiedad in propiedadesFormularioDetalle)
                {
                    <dt>
                        @Html.DisplayName(propiedad.Key)
                    </dt>
                    <dd>
                        @Html.DisplayFor(prop => propiedad.Value)
                    </dd>
                }
            </dl>
        </div>   
    //} - this needs to be moved to the bottom   
    </div>
}

试试这个:

@if (propiedadesFormularioDetalle != null) 
{ 
     <div class="panel panel-default">
         <div class="panel-heading">Propiedades adicionales</div>
             <div class="panel-body">
                 <dl class="dl-horizontal">
                      @foreach (KeyValuePair<string, string> propiedad in propiedadesFormularioDetalle)
                      {
                           <dt>
                                @Html.DisplayName(propiedad.Key)
                           </dt>
                           <dd>
                                @Html.DisplayFor(prop => propiedad.Value)
                           </dd>

                      }
                  </dl>
              </div>                        
      </div>
} 
@if (propiedadesFormularioDetalle != null) 
{ 
     <div class="panel panel-default">
          <div class="panel-heading">Propiedades adicionales</div>
          <div class="panel-body">
               <dl class="dl-horizontal">
               @foreach (KeyValuePair<string, string> propiedad in propiedadesFormularioDetalle)
               {
                     <dt>@Html.DisplayName(propiedad.Key)</dt>
                     <dd>@Html.DisplayFor(prop => propiedad.Value)</dd>
                }
                </dl>
           </div>      
    </div>
 }

然而! "if" 语句之上的任何内容都会影响此。如果您已经在代码块中,Razor 会抱怨 "if" 语句前面不必要的“@”。