1

機能: ユーザーがビューの PersonList を更新することを選択するたびに、jquery から viewModel を更新したいと考えています。

クラスの人がいる場合:

public class Person
{
 public string Name {get;set;}
 public int Age {get;set;}
}

そして、私は実行するビューに人のリストを含む複雑なビューモデルを持っています:

foreach(var person in model.Item.PersonList)
{
 @Html.Partial("_PersonList", person)
}

部分図 :

//_PersonList partial
@model Person
@using (Html.BeginCollectionItem("Item.PersonList"))
{
 //hidden fields just for testing
 @Html.HiddenFor(x => Model.Name)
 @Html.HiddenFor(x => Model.Age )                 
}

ユーザーが新しい人物を追加するたびに、個人データが既に入力されている必要がある partialView(_PersonList) の ajax リクエストと asp を送信します。

ajax リクエストが次のように終了した後、パーシャル内の年齢と名前のフィールド:

<input data-val="true" data-val-required="" id="item_PersonList_1dc2189b-0cc9-4397-aa6d-8a6fa1cc4e36__Name" name="item.PersonList[1dc2189b-0cc9-4397-aa6d-8a6fa1cc4e36].Name" type="hidden" value="somRandomName">

これは問題なく動作しますが、ユーザーが 20 人を追加することを選択した場合、サーバーに対して 20 のリクエストを行う必要がありますが、これは避けたいと考えています。

そのため、人のリストを部分ビューに送信しようとしました。

私は partialView を変更しました:

//_PersonList partial
@model List<Person>
@using (Html.BeginCollectionItem("Item.PersonList"))
{
 @for (var i; i < Model.Count(); i++)
 {
   //hidden fields just for testing
   @Html.HiddenFor(x => Model[i].Name)
   @Html.HiddenFor(x => Model[i].Age )                 
 }
}

しかし、リストを取得した後の入力フィールドは次のようになります。

<input data-val="true" data-val-required="" id="item_PersonList_1dc2189b-0cc9-4397-aa6d-8a6fa1cc4e36_0_Name" name="item.PersonList[1dc2189b-0cc9-4397-aa6d-8a6fa1cc4e36][0].Name" type="hidden" value="somRandomName">

フォームを投稿すると、ビューモデルの一部として認識されません。問題は、どこからともなく name および id 属性に [0] が追加されていることです

どうすればこの動作を防ぐことができますか?

foreach id を使用すると、次のようになります。 item.Products[4456a32b-eb06-4665-be23-31666d72824e].item.Uid

4

0 に答える 0