私はMVC3、JQueryAJAXで以下を達成するための最良の方法を探しています:
私はショッピングカートを持っており、カート内の製品ごとに異なる船を入力して住所を指定できます。アイデアは、この船を各製品のすぐ下に形成し、[保存]ボタンを付けて、JQueryAJAXを介して送信することです。
私がやろうとしていた方法は、フォームを部分ビュー内に(Html.BeginFormと送信SAVEボタンとともに)配置し、部分ビューをビューのforeachループ内にレンダリングすることでした。 (viewmodelアイテムを部分ビューフォームに渡します)。
カート内の最初の商品はすべて正常に機能しますが、カート内の2番目または3番目の商品の他のフォームアドレスを入力して送信しようとすると、実際には最初の商品からIDを取得し、そのIDを更新します。
Googleを読んで、フォームへのモデルのバインドに関する記事を見つけましたが、そのような場合は、foreachループの前に全体的なHtml.BeginBeginFormが1つと、送信ボタンが1つだけあります。各製品の下の各フォームに送信(SAVE)ボタンを設定し、AJAX呼び出しを介して送信するにはどうすればよいですか?
何千人もよろしくお願いします!!!
アップデート:
たぶん、私がここで行っていることのより良い絵を与えるために、例があります:
メインビューのCart.cshtmlには、次のものがあります。
@foreach (var item in Model.CartItems)
{
@Html.Partial("ShipToAddress", new AddressViewModel(item.CartDetailsId))
}
次に、ShipToAddress.cshtmlの部分ビューで、次のようになります。
@using (Html.BeginForm("SaveShipToAddress", null, FormMethod.Post))
{
@Html.HidenFor(model => model.ItemId)
@Html.TextBoxFor(model => model.Name)
@Html.TextBoxFor(model => model.Address)
<input type="submit" value="Save" id="saveShipToAddress" />
}
そして、このフォームに関連付けてAJAX経由で送信するjqueryスクリプトファイルがあります。
私の問題は、フォームが部分ビュー内にあることです。そのため、フォームが生成されると、カート内のすべてのアイテムに対して同じIDが使用されます。
ありがとう!