表单中的模型绑定

时间:2013-09-21 06:18:56

标签: c# asp.net asp.net-mvc json asp.net-mvc-4

我正在尝试将json绑定到ASP .net MVC 4中的模型。模型确实已创建但属性未填充。

我的javascript:

   $.ajax({
     type: 'POST',
        url: "/Admin/" + method,
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(form.serializeArray()),
        success: function (data) {
            if (data.Success == true) {


            }
        }
    });

我的班级:

public class Taxes {
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Rate { get; set; } }

我的方法:

[HttpPost]
public JsonResult AddTax(Taxes tax)
{

    return Json(new { Success = true, tax.Id });
}

Json:

[{"name":"Id","value":"1"},{"name":"Name","value":"fsdfs"},{"name":"Rate","value":"18"}]

结果是:

Id = 0
Name = Null
Rate = 0

1 个答案:

答案 0 :(得分:2)

嗯,你已经写好了你的问题,但你只是不读它。你的来电 JSON.stringify(form.serializeArray())正在为您生成此内容:

[{"name":"Id","value":"1"},{"name":"Name","value":"fsdfs"},{"name":"Rate","value":"18"}]

只能映射到这样的内容:

IEnumerable<SampleClass> model

SampleClass具有属性:

public class SampleClass
    {
         public string name {get;set;}
         public string value {get;set;}
    }

您需要不同类型的方法,其中包括:

  1. 为您创建javascript对象
  2. 对于使用form.serializeArray()创建的数组的每个成员,它将 将属性添加到名为member.name且带有值的对象 member.value
  3. 然后,

    JSON.stringify将为您的Taxes类生成正确的JSON表示。

    检查此处的实施:

    https://github.com/hongymagic/jQuery.serializeObject