这是来自 MVC3/Razor 视图文件的精简代码片段:
@foreach (var item in Model.Stuff.Items){
<tr>
<td>@item.Title</td>
</tr>
<tr>
<td>
@using (Html.BeginForm()) {
@item.Title
@Html.HiddenFor(item => item.Title)
}
</td>
</tr>
} @* End of Items foreach loop *@
标题显示在第一行。它还显示在表单内部。但是尝试在HiddenFor
我收到错误CS0136中使用它:无法在此范围内声明名为“item”的局部变量,因为它会给“item”赋予不同的含义,该“item”已在“父级或当前/子级”中使用表示其他东西的范围
我不明白为什么会这样。在item => item.Title
第一个“项目”中实际上只是匿名函数中的参数名称,不是吗?
当我将其更改为:@Html.HiddenFor(s => s.Title)
我收到错误 CS1963,表达式树可能不包含动态操作。
背景:目的是在 Model.Stuff.Items 中的每个条目有两个表行,第一个以静态 HTML 的形式提供当前信息,第二个是它的编辑表单。(其中一个或另一个将在任何时候使用 javascript 隐藏。)表单将提交给此控制器上的另一个操作。所有表单都提交到同一个 URL;隐藏值将标识正在更新的行。