14

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

代码

<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>

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

<tr id="trPhone2">

如何使用 ASP.NET MVC Razor 执行此操作?

4

5 回答 5

10

语法可能不完美,但试试这个:

    @{ 
        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>
于 2013-05-29T12:43:32.823 回答
7
@if (string.IsNullOrEmpty(Model.phone2))
{
    <tr class="hide" id="trPhone2">
}
else
{
    <tr id="trPhone2">
}
于 2013-05-29T12:42:46.453 回答
2

只需将此字段包装在 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!="")
{

    <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 对象中删除了该字段,因此消除了以后被编辑的任何可能性。

于 2013-05-29T12:43:46.910 回答
1

我会在代码块中计算类名并输出它。类似于以下内容:

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

<tr class="@phone2ClassName" id="trPhone2">
...
于 2013-05-29T12:45:39.230 回答
0

如果它是非常复杂的逻辑,那么像这样使用:

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" >  
于 2014-09-30T14:02:38.443 回答