私は MVC 3 でかなり新しいですが、かなり奇妙な問題に遭遇しました。私は Razor 構文を使用しています。VS によれば、@
ステートメントの直前に別の@
ステートメントがある場合、またはコード内でプレフィックス@
が不要になった場合は、ステートメントにプレフィックスを付ける必要はありません。
だからここに私のビューの私のコードがあります:
@using (Html.BeginForm("StudentSelect", "Home", FormMethod.Post, new { id = "sSelect" })) {
Html.HiddenFor(m => m.SelectedStudent);
foreach (Classes.CStudent item in Model.Students)
{
<div class="studentSelect">
<div class="studentname">@item.StudentName</div>
<div>@item.Address</div>
</div>
}
}
Html.HiddenFor
およびforeach
行に@
接頭辞がないことに注意してください。生成された HTML は<form>
、フィールドが続く<input type="hidden">
フィールドを生成する必要があります。ただし、生成されたページの HTML を確認すると、非表示の入力フィールドがありません。
<form action="/Home/StudentSelect" id="sSelect" method="post">
<div class="studentSelect">
<div class="studentname">Name1</div>
<div>AAA</div>
</div>
<div class="studentSelect">
<div class="studentname">Name2</div>
<div>Address1</div>
</div>
</form>
私は何か間違ったことをしていますか?非表示の入力がレンダリングされないのはなぜですか? どんな手がかりも役立ちます。ありがとう
ちなみに、このコードは正しくコンパイルされます。ただし、コード@
の前にプレフィックスを付けるとHtml.HiddenFor
コンパイルされず、Visual Studio でエラーが発生します。