我有一個複雜的模型包含一個數組。爲了渲染這個數組的項目,我使用的EditorFor是這樣的:在EditorTemplate(在數組中)/多個綁定前綴的後期綁定模型?
for (int i = 0; i < Model.Contacts.Phones.Length; i++)
{
@Html.EditorFor(x => x.Contacts.Phones[i])
}
在編輯器裏面有一個post-form。問題是,綁定成功,只有當我正好指定綁定前綴:
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones[0]")]Contact5UsedPhone model)
{ ... }
所以它僅適用於第一要素。什麼是正確的前綴形式?
對於不同的屬性,也有在同一頁面編輯器 - 但相同類型的模型和相同的動作因此被執行。是否可以設置多個綁定前綴?例如。
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones[0], Contacts.AnotherPrefix")]
Contact5UsedPhone model)
{ ... }
謝謝!
編輯 - 型號:
public class ContactsViewModel
{
public Contact5UsedPhone AddiblePhone {get;set;}
public Contact5UsedPhone[] Phones {get;set;}
...
}
編輯 - 答案: 我找到了一個解決方案。至於有一個陣列(手機)和一個單一的實體(AddiblePhone),我用了兩個參數,如果簡單:
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones")]Contact5UsedPhone[] models,
[Bind(Prefix = "Contacts.AddiblePhone")]Contact5UsedPhone model)
{
model = model ?? models[0];
...
}
的問題仍然存在 - 如果有什麼有AddiblePhones爲數組?是否可以爲一個參數使用兩個前綴,還是必須將它分成兩個參數,就像我在這種情況下所做的那樣?
你能後的代碼爲您的視圖模型。您的動作應該有一個IEnumerable參數,或者作爲viewmodel的一個屬性。 –
已編輯並部分回覆... –