【问题标题】:How to send a dynamic list of objects to controller in MVC using jQuery and Ajax如何使用 jQuery 和 Ajax 将对象的动态列表发送到 MVC 中的控制器
【发布时间】:2013-02-23 21:48:09
【问题描述】:

我正在使用对象动态填充表单,允许编辑新字段,然后尝试将表单提交到另一个不同对象类型的列表。

我目前正在使用 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>
}

如果我将我的标签复制为&lt;input type="hidden"&gt; 属性,我需要的所有字段都会发送到部分视图结果,但是有没有更好的方法可以使用 jQuery 而不是 Ajax 表单?

【问题讨论】:

  • 我建议使用 Html 助手,这将使一切变得更加简单和整洁。

标签: javascript jquery asp.net-mvc asp.net-ajax


【解决方案1】:

标签永远不会通过 HTTP POST 提交。只有&lt;input&gt;&lt;select&gt;&lt;textarea&gt; 元素是。

如果您想将这些值传回,您可以像现在一样使用隐藏的输入字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2021-12-26
    • 2014-02-28
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多