1

フォームにオブジェクトを動的に入力し、新しいフィールドを編集できるようにしてから、フォームを別のオブジェクト タイプの別のリストに送信しようとしています。

現在、これを行うために Ajax フォームを使用していますが、<label for=>属性は他の属性と一緒に部分ビューの結果に送信されていません。

私のコントローラーの部分ビューの結果は次のとおりです。

[HttpPost]
public PartialViewResult AddToOrder(IList<OrderItemModel> form_list)
{ 
    // do something
}

私の見解では、Ajax フォームは次のとおりです。

@using (Ajax.BeginForm("AddToOrder", "Order", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "result" }))
{
   for (int i = 0; i < Model.Count; i++)
   {
    <tr>
       <input type="hidden" name="form_list[@i].item_id" value="@Model[i].id" />
       <td><label for="form_list[@i].description">@Model[i].description</label></td>
       <td><label for="form_list[@i].price">@Model[i].price</label></td>
       <td><input type="text" name="form_list[@i].quantity"  value="0" /></td> 
    </tr>
   }

   <td><input type="submit" value="Add to order"/></td>
}

ラベルを<input type="hidden">属性として複製すると、必要なすべてのフィールドが部分ビューの結果に送信されますが、Ajax フォームの代わりに jQuery を使用してこれを行うより良い方法はありますか?

4

1 に答える 1

0

ラベルが HTTP POST で送信されることはありません。<input><select>および<textarea>要素のみです。

これらの値を戻したい場合は、現在行っているように非表示の入力フィールドを使用できます。

于 2013-02-23T21:50:36.943 に答える