JSON String不填充对象的基本属性(MVC 4)

时间:2013-11-15 15:57:49

标签: c# asp.net-mvc jquery

我正在使用MVC应用程序,并且在向具有继承自另一个类的类的对象的控制器发布时遇到了问题。未正确映射对象的基本属性。

我目前有以下类结构:

public class A
{
     public DateTime Property1;
     public DateTime Property2;
}

//Class B Inherits from A.
public class B : A
{
     public int[] intArray;
}

当我在JSON中执行B类对象的JQuery帖子时,它只映射(或填充)int [] intArray属性,并且似乎无法填充A类基本属性。

在我的ajax帖子中,这是我的JSON.stringify数据的样子。

[{“Property1”:'10 / 21/2013',“Property2”:'11 / 21/2013',“intArray”:[1,2,3,4,5]}]

Jquery Ajax Post:

var dataObject = @(Html.Raw(new JavaScriptSerializer().Serialize(Model)));
dataObject= [{"Property1": '\/Date(0123131)\/', "Property2": '\/Date(0123131)\/', "intArray": [1,2,3,4,5]}];
dataObject= JSON.stringify(dataObject);

$.ajax(
{
url: '@Url.Action("GenerateExpensePeriod", "Expense")',
            data: dataObject,
            type: 'POST',
            contentType: 'application/json',
            success: function (results) {
                return results;
            },
            error: function (error) {
                alert('Error');
            }

        });

`

我的控制器方法签名是:

public ActionResult ActionName(ClassB data)
{ }

intArray属性是唯一可以填充的属性。我如何获得Property1和Property2?

感谢。

2 个答案:

答案 0 :(得分:2)

似乎没有使用JavaScriptSerializer正确解析Date。

要解决这个问题,我需要应用以下内容

dataObject["Property1"] = new Date(parseInt(dataObject["Property1"].substr(6)));

与继承无关,因为我错了。

答案 1 :(得分:1)

问题在于如何使用

序列化模型
var dataObject = { json : "@Html.Raw(JsonConvert.SerializeObject(Model))" };

请参阅此帖子。

JSON.net Serialize C# object to JSON Issue