我如何有条件地显示一个字段在ASP.NET MVC剃刀

本文关键字:字段 一个 ASP NET 剃刀 MVC 有条件 显示 | 更新日期: 2023-09-27 18:15:48

我是c#和ASP的新手。NET MVC剃刀。我想在我的视图中显示一个字段,如果该字段不是空的。

代码
<tr class="hide" 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>

现在,我想输出第一行<tr>如果model.phone2 is ""和其他输出:

<tr id="trPhone2">

我如何使用ASP做到这一点?。MVC剃刀?

我如何有条件地显示一个字段在ASP.NET MVC剃刀

语法可能不完美,但请尝试:

    @{ 
        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>
@if (string.IsNullOrEmpty(Model.phone2))
{
    <tr class="hide" id="trPhone2">
}
else
{
    <tr id="trPhone2">
}

将此字段换行到if condition

@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!="")
{
    <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>
}

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

我会在代码块中计算类名并输出。类似以下语句:

@{
   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" >