這裏是從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錯誤。關於動態類型的東西。 –