4

特定の変数が設定されている場合、特定のフィールドをテキストボックスにしたいのですが、そうでない場合は、そのフィールドに値を表示するだけですが、その値は編集できません。

if else ロジックをビューに入れましたが、値が表示されません。ここで何か不足していますか?

            @{
                if (isFlagSet) {
                    Html.TextBoxFor(m => m.HostpitalFinNumber, new { @Value = Model.HostpitalFinNumber });
                    Html.ValidationMessageFor(m => m.HostpitalFinNumber);
                }
                else {
                    Html.DisplayTextFor(m => m.HostpitalFinNumber);
                }
            }

アップデート...

コードを次のように変更しました

            @if (isFlagSet) {
                    Html.TextBoxFor(m => m.HostpitalFinNumber);
                    Html.ValidationMessageFor(m => m.HostpitalFinNumber);
            }
            else {
                    Html.DisplayFor(m => m.HostpitalFinNumber);
            }

以下は生成中のHTMLです。Phone の入力値が書き込まれているが、病院の fin は書き込まれていないことに注意してください。なぜそれが起こっているのかは確かです。

    <tr><td>
        <label for="Phone">Phone</label>
        </td>
        <td>
        <input Value="4124880798" id="Phone" name="Phone" type="text" value="4124880798" />
    </td></tr>
    <tr><td>
        <label for="HostpitalFinNumber">HostpitalFinNumber</label>              
        </td>
        <td>

    </td></tr>

答え

@ を HTML ヘルパーの前に置き、セミコロンを削除するのを忘れていました。

4

1 に答える 1

9

Razorの構文が間違っています。正しい構文は次のとおりです(周囲は必要ありません@{ })。

@if (isFlagSet) {
    @Html.TextBoxFor(m => m.HostpitalFinNumber)
    @Html.ValidationMessageFor(m => m.HostpitalFinNumber)
}
else {
    @Html.DisplayTextFor(m => m.HostpitalFinNumber)
}

Htmlヘルパーは応答に直接書き込みません(名前がで始まるものを除くRender)ので、を使用し@て生成されたHTMLを出力に書き込む必要があります。

new { @Value = Model.HostpitalFinNumber }が処理するため、式を使用して手動で値を設定する必要がないことに注意してくださいHtml.TextBoxFor

于 2012-10-18T14:44:07.233 に答える