我是 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
andforeach
行没有@
前缀。生成的 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 会产生错误。