C# 如何在ASP.NET MVC中有条件地显示字段?

C# 如何在ASP.NET MVC中有条件地显示字段?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我对C#和ASP.NET MVC Razor非常陌生。如果字段不是空的,我想在视图中显示该字段 代码 如何使用ASP.NET MVC Razor做到这一点?@if(string.IsNullOrEmpty(Model.phone2)) @if (string.IsNullOrEmpty(Model.phone2)) { <tr class="hide" id="trPhone2"> } else { <tr id="trPhone2"> } { } 其他

我对C#和ASP.NET MVC Razor非常陌生。如果字段不是空的,我想在视图中显示该字段

代码 如何使用ASP.NET MVC Razor做到这一点?

@if(string.IsNullOrEmpty(Model.phone2))
@if (string.IsNullOrEmpty(Model.phone2))
{
    <tr class="hide" id="trPhone2">
}
else
{
    <tr id="trPhone2">
}
{ } 其他的 { }
语法可能不完美,但请尝试以下方法:

    @{ 
        var trClass = string.IsNullOrEmpty(Model.phone2) ? "hide" : ""; 
    }

    <tr class="@trClass" id="trPhone2">
        <td class="editor-label">
            @Html.LabelFor(model => model.phone2)
        </td>
        <td>
            @Html.EditorFor(model => model.phone2)
        </td>
        <td>
            @Html.ValidationMessageFor(model => model.phone2)
        </td>
    </tr>
@{
var trClass=string.IsNullOrEmpty(Model.phone2)?“隐藏”:“”;
}
@LabelFor(model=>model.phone2)
@EditorFor(model=>model.phone2)
@Html.ValidationMessageFor(model=>model.phone2)

只需将此字段包装在if条件中即可

@if (Model.phone2=="")
{
    <tr class="hide" id="trPhone2">
}
else
{
    <tr id="trPhone2">
}
            <td class="editor-label">
                @Html.LabelFor(model => model.phone2)
            </td>
            <td>
                @Html.EditorFor(model => model.phone2)
            </td>
            <td>
                @Html.ValidationMessageFor(model => model.phone2)
            </td>
        </tr>
@if(Model.phone2==“”)
{
}
其他的
{
}
@LabelFor(model=>model.phone2)
@EditorFor(model=>model.phone2)
@Html.ValidationMessageFor(model=>model.phone2)
或者,您可以像这样跳过整个场的渲染

@if (Model.phone2!="")
{

    <tr id="trPhone2">
        <td class="editor-label">
                @Html.LabelFor(model => model.phone2)
            </td>
            <td>
                @Html.EditorFor(model => model.phone2)
            </td>
            <td>
                @Html.ValidationMessageFor(model => model.phone2)
            </td>
        </tr>
}
@if(Model.phone2!=“”)
{
@LabelFor(model=>model.phone2)
@EditorFor(model=>model.phone2)
@Html.ValidationMessageFor(model=>model.phone2)
}

这是一种更好的方法,因为它完全从dom对象中删除字段,从而消除了以后被编辑的可能性

我将计算代码块中的类名并输出该名称。大致如下:

@{
   var phone2ClassName = string.IsNullOrWhiteSpace(Model.phone2) ? "hide" : string.Empty;
}

<tr class="@phone2ClassName" id="trPhone2">
...
@{
var phone2ClassName=string.IsNullOrWhiteSpace(Model.phone2)?“hide”:string.Empty;
}
...

如果是非常复杂的逻辑,则使用如下方式:

var trId = "";
if(Model[i].FeeType == (int)FeeTypeEnum.LateFee  
    || Model[i].FeeType == (int)FeeTypeEnum.WaivedFee)
{        
    trId=String.Format("{0}_{1}", @Model[i].ProductId, @Model[i].FeeType);
}
else
{
   trId = @Model[i].ProductId.ToString();
}  


<tr id="@trId" >  
var trId=”“;
if(Model[i].FeeType==(int)FeeTypeEnum.LateFee
||模型[i]。FeeType==(int)FeeTypeEnum.dfee)
{        
trId=String.Format(“{0}{1}”,@Model[i].ProductId,@Model[i].FeeType);
}
其他的
{
trId=@Model[i].ProductId.ToString();
}  

这看起来很简单,但它在我的代码中抛出了错误。我想因为我把c#in和html混合在一起了。@dmikester1,给我们看看你的代码,我相信这个错误可以很容易地解决。我最后使用了另一个答案。Thanks我将您的代码粘贴在我的其他HTML之间,它说有两个带有trPhone2的id,有两个打开的块。@dmikester1,您应该用上面的代码片段替换第一行。否则,代码片段插入了一个
标记,而我们的代码的第一行插入了另一个标记-似乎这就是问题所在。无论如何,很高兴知道你已经找到了一个解决办法。它像一个魅力!你也可以像
@Html.ActionLink(“,”action“,”controller“,”new{id=id},new{@class=“btn-btn-default-btn\u-details”+@trClass})那样做
@{
   var phone2ClassName = string.IsNullOrWhiteSpace(Model.phone2) ? "hide" : string.Empty;
}

<tr class="@phone2ClassName" id="trPhone2">
...
var trId = "";
if(Model[i].FeeType == (int)FeeTypeEnum.LateFee  
    || Model[i].FeeType == (int)FeeTypeEnum.WaivedFee)
{        
    trId=String.Format("{0}_{1}", @Model[i].ProductId, @Model[i].FeeType);
}
else
{
   trId = @Model[i].ProductId.ToString();
}  


<tr id="@trId" >