私は 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 でエラーが発生します。