売り手のコレクションを持つビュー モデルの部分ビューがあります。リストをレンダリングするために、すべてのセラーをループします。ビューモデルは次のとおりです。
public class SellersPartialViewModel
{
public IList<OrderViewModel> Sellers { get; set; }
}
部分ビューでは、コレクションをループするときに Html.BeginCollectionItem("Sellers") を使用しています。これが部分ビューのコードです (参考までに、表示する必要のない多くの役に立たないコードを削除しました)。 ):
<div id="sellers-list">
@{
var i = 0;
while (i < Model.Sellers.Count) {
var seller = Model.Sellers[i];
using (Ajax.BeginForm(MVC.Video.PurchaseShares(), purchaseSharesAjaxOptions, new { @class = "seller-form", id = "seller-form-" + i })) {
@using(Html.BeginCollectionItem("Sellers")) {
@Html.TextBoxFor(m => seller.Qty, new { @class = "buyer-qty" })
@Html.ValidationMessageFor(m => seller.Qty)
<input class="buyer-qty-submit" name="Qty" type="hidden" value="" />
<button type="submit">Buy</button>
}
}
}
i++;
}
}
</div>
これは、パーシャルをレンダリングしてクライアント側の検証を機能させるのに問題なく機能しますが、各売り手に名前の付いた入力qty
とorderId
、というコントローラーアクションを持たせたいですPurchaseShares(int orderId, int qty)
。
唯一の問題は、フォームが奇妙な GUID で送信されSellers[5b5fd3f2-12e0-4e72-b289-50a69aa06158].seller.Qty
ていることです。これは、コレクションの送信には正しいと理解していますが、それを行う必要はありません。
現在、選択したもので更新するJavascriptがいくつかあり、class="buyer-qty"
正常に動作しますが、これを行うためのより良い方法が必要ですよね?
ありがとう