【问题标题】:JSON String does not populate base properties of an Object (MVC 4)JSON 字符串不填充对象的基本属性 (MVC 4)
【发布时间】:2013-11-29 02:08:38
【问题描述】:

我正在使用 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 帖子:

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?

谢谢。

【问题讨论】:

  • 也添加你的 jquery & json 形成代码..
  • 好的,让我编辑我的帖子。

标签: c# asp.net-mvc jquery


【解决方案1】:

问题在于你如何序列化模型尝试使用

var dataObject = { json : "@Html.Raw(JsonConvert.SerializeObject(Model))" };

查看此堆栈帖子。

JSON.net Serialize C# object to JSON Issue

【讨论】:

    【解决方案2】:

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

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

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

    与继承无关,我弄错了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多