我懷疑你需要改變id
和name
屬性,因爲你沒有使用視圖模型。下面似乎只是這樣的錯誤:
@Html.EditorFor(x => ViewBag.NestedFormDatas)
如果你正確使用視圖模型,你不需要改變名稱和ID,因爲編輯器模板將已經生成正確的價值觀:
@Html.EditorFor(x => x.NestedFormDatas)
不管怎麼說,一種可能性是爲給定類型編寫自定義編輯器模板。因此,如果我們假設NestedFormDatas
是,你可以添加以下~/Views/Shared/EditorTemplates/String.cshtml
編輯模板覆蓋the default one,並允許您指定其他屬性字符串類型:至於
@Html.EditorFor(x => x.NestedFormDatas, new { id = "foo" })
:
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
ViewData
)
,然後name
屬性而言,這不是可以用TextBox
助手重寫的內容。如果您需要實現這一點,您將不得不編寫自己的幫手。但正如我所說,如果你使用視圖模型,你永遠不需要這樣做,因爲這正是視圖模型的目的:它們被特別定義以匹配給定視圖的要求。
因此,請刪除代碼中的任何痕跡ViewBag
,並開始定義視圖模型。您將看到ASP.NET MVC將變得多麼有趣和簡單。
我通常會同意使用ViewModel,但是我不這樣做的原因是因爲模型是正確的,但我用來創建視圖的方法有點不正規。這很難解釋。 基本上在我的視圖中,我選擇將對象列表移動到另一個編輯器模板中的另一個區域。這從用戶的角度來看是有道理的,但在代碼中,我必須修改ID字段以重新連接發佈的模型。 – 2012-02-12 19:01:51
我的ID需要成爲'DesiredPrefix_0__NestedFormData_0__Property'以前它是'NestedForm_0__NestedFormData_0__Property' 在這種情況下的DesiredPrefix是模型上的另一個列表。 – 2012-02-12 19:06:27