jquery - asp mvc3,带有包含 json 数组的隐藏输入的帖子表单

标签 jquery asp.net-mvc-3 knockout.js

我有一个这样的表格:

<form id="orderForm">
    <input name="Customer" value="Mr.Test" />
    <input name="ProductLines" value='[{"Product":{"Name":"Orange","Price":"10"},"amount":"2","total":"20"}, {"Product":{"Name":"Apple","Price":"5"},"amount":"3","total":"15"}]' />
</form>

和带有 View 模型的 Controller :

[HttpPost]
public ActionResult Save(OrderViewModel vm)
{
    //...
}

public class OrderViewModel
{
    public OrderViewModel() { ProductLines = new List<OrderProductViewModel>(); }
    public string Customer { get; set; }
    public IEnumerable<OrderProductViewModel> ProductLines { get; set; }
}

public class OrderProductViewModel
{
    public ProductViewModel Product { get; set; }
    public int Amount { get; set; }
    public int Total { get; set; }
}

public class ProductViewModel
{
    public string Name { get; set; }
    public int Price { get; set; }
}

是否可以使用 jquery 发布此表单

      $.post('@Url.Action("Save")', $("#orderForm").serialize(), function (data) {//...}, "json");

并在服务器端填充 ProductLines 集合。 (目前始终为空)

谢谢!

最佳答案

发布对象需要转换为json对象并以内容类型json发布。 尝试以下方法可能会有所帮助

var results = {};
$.each($("#orderForm").serializeArray(), function (index, item) {
    results[item.name] = item.value;
});
results.ProductLines = $.parseJSON(results.ProductLines);
$.ajax({
    url: '@Url.Action("Save")',
    type: 'post',
    data: JSON.stringify(results),
    contentType: "application/json; charset=utf-8",
    dataType:'json',
    success: function (data) {
        alert("hi");
    }
});

关于jquery - asp mvc3,带有包含 json 数组的隐藏输入的帖子表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9860773/

相关文章:

jquery - 我怎样才能得到 :hover state for jCarousel arrows to work?

Knockout.js 模板范围的半全局变量

c# - 带有 optgroup 和 knockoutJS 的选择框

jquery - 每次将浏览器大小调整为小于 1600x1020 时,从值为 100 的 var 中减去 1

html - 使用shinyjqui拖放到网格表中

javascript - 刷新页面后是否可以保留表单(html)内容数据?

asp.net-mvc-3 - 在 &lt;script&gt; "text/html"模板中保持正确的 HTML 语法突出显示

asp.net - ASP.NET MVC 中静态方法和非静态方法的区别

c# - MVC3 中的 CSS 背景图像——续

javascript - knockout 示例模板示例不起作用