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>

<tr>今、私はその最初の行を出力したいと思いますif the model.phone2 is ""and else output:

<tr id="trPhone2">

ASP.NET MVC Razor を使用してこれを行うにはどうすればよいですか?

4

5 に答える 5

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 に答える