这里是从MVC3/Razor视图文件的精简的代码片断:为什么我在Html.HiddenFor中得到变量范围错误(CS0136)?
@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'已经在'parent'或者current /孩子'的范围来表示别的
我不明白为什么会这样;在item => item.Title
中,第一个“item”实际上只是匿名函数中的一个参数名称,不是吗?
当我将其更改为:@Html.HiddenFor(s => s.Title)
时出现错误CS1963,表达式树可能不包含动态操作。
背景:目的是为Model.Stuff.Items中的每个条目创建两个表行,第一个将当前信息作为静态HTML提供,第二个表为它的编辑形式。 (其中一个或另一个将随时使用javascript隐藏)。表单将提交给此控制器上的另一个操作。所有表单都提交到相同的URL;隐藏的值将标识哪一行正在更新。
感谢Yasser。不幸的是,然后给了我第二个错误我提到(CS1963)。顺便说一句'Html.HiddenFor(x => x)'给我“_System.ArgumentException:值不能为空或空_” –
尝试'Html.HiddenFor(x => item.Title)'jnstead 'Html.HiddenFor(x => x)' – Yasser
('@ Html.HiddenFor(x => item.Title)')是什么给了CS1963错误。关于动态类型的东西。 –