我使用对象动态填充表单,允许编辑新字段,然后尝试将表单提交到另一个不同对象类型的列表。
我目前正在使用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">
属性,我需要的所有字段都会被发送到部分视图结果,但有没有更好的方法可以使用jQuery而不是Ajax表单?
答案 0 :(得分:0)
标签永远不会通过HTTP POST提交。只有<input>
,<select>
和<textarea>
元素。
如果要将这些值传递回去,可以像现在一样使用隐藏的输入字段。