无法在对象中看到数据属性

时间:2015-09-02 14:05:13

标签: c# json asp.net-mvc

我觉得我错过了一些小事,但我无法理解我的生活。我有一个ActionResult来从视图中接收一些过滤器。我通过ajax发送给json:

function filter() {
    var startDate = wijmo.Control.getControl('#StartDate').value;
    var endDate = wijmo.Control.getControl('#EndDate').value;
    var stringData = JSON.stringify({ 'StartDate': startDate, 'EndDate': endDate, 'SalesPersonId': '', 'Status': '', 'NewIncumbent': '' });
    $.ajax({ url: "@Url.Action("Filter")",
        type: 'POST',
        async: false,
        contenttype: 'application/json',
        data: stringData,
        dataType: "json"
    });
};

我有一个接收数据的课程:

 private class FilterResult
    {
        [JsonProperty("StartDate")]
        DateTime StartDate { get; set; }
        [JsonProperty("EndDate")]
        DateTime EndDate { get; set; }
        [JsonProperty("SalesPersonId")]
        int? SalesPersonId { get; set; }
        [JsonProperty("Status")]
        int? Status { get; set; }
        [JsonProperty("NewIncumbent")]
        bool? NewIncumbent { get; set; }
    }

进入ActionResult时填写数据:

public ActionResult Filter(FilterResult results)
    {


    }

当我尝试以任何有意义的方式使用结果时,唯一的选项是Equals,GetHashCode,GetType和ToString。

这让我觉得这个类没有被识别,但是在Locals窗口中我可以看到结果中的数据。 FilterResults位于同一个控制器文件中。有谁知道这可能导致什么?

2 个答案:

答案 0 :(得分:1)

默认情况下,您的类成员(属性)的访问级别为private。您需要创建属性public

private class FilterResult
{
    [JsonProperty("StartDate")]
    public DateTime StartDate { get; set; }
    [JsonProperty("EndDate")]
    public DateTime EndDate { get; set; }
    [JsonProperty("SalesPersonId")]
    public int? SalesPersonId { get; set; }
    [JsonProperty("Status")]
    public int? Status { get; set; }
    [JsonProperty("NewIncumbent")]
    public bool? NewIncumbent { get; set; }
}

答案 1 :(得分:1)

如果FilterResult类与ActionResult位于同一个控制器中,则它可以是私有的,但如果您希望能够设置它们或从类外部访问它们,则属性必须是公共的。我会把这个类和属性公之于众,以确保

public class FilterResult
{
    [JsonProperty("StartDate")]
    public DateTime StartDate { get; set; }
    [JsonProperty("EndDate")]
    public DateTime EndDate { get; set; }
    [JsonProperty("SalesPersonId")]
    public int? SalesPersonId { get; set; }
    [JsonProperty("Status")]
    public int? Status { get; set; }
    [JsonProperty("NewIncumbent")]
    public bool? NewIncumbent { get; set; }
}