配列を含む複雑なモデルがあります。この配列のアイテムをレンダリングするために、次のように EditorFor を使用しています。
for (int i = 0; i < Model.Contacts.Phones.Length; i++)
{
@Html.EditorFor(x => x.Contacts.Phones[i])
}
エディター内には投稿フォームがあります。問題は、バインディング プレフィックスを正確に指定した場合にのみバインディングが成功することです。
[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;}
...
}
編集 - 回答:これに対する解決策を見つけました。1 つの配列 (Phones) と 1 つのエンティティ (AddiblePhone) があるため、2 つのパラメーターと単純な if を使用しました。
[HttpPost]
public ActionResult SavePhone(
[Bind(Prefix = "Contacts.Phones")]Contact5UsedPhone[] models,
[Bind(Prefix = "Contacts.AddiblePhone")]Contact5UsedPhone model)
{
model = model ?? models[0];
...
}
質問はまだ残っています - AddiblePhones が配列としてあった場合はどうなるでしょうか? 1 つのパラメーターに 2 つのプレフィックスを使用することは可能ですか、それともこの場合のように 2 つのパラメーターに分割する必要がありますか?