当对象字段为私有时,javascript调用MVC控制器参数始终为null

当对象字段为私有时,javascript调用MVC控制器参数始终为null,javascript,asp.net-mvc,parameters,controller,private,Javascript,Asp.net Mvc,Parameters,Controller,Private,我使用javascript调用控制器来处理函数。 当字段设置为private时,参数值(摘要中的名称)为null。 当该字段设置为“公共”时,它将起作用。 设置为公共是唯一的方法吗?还是有更好的方法? 提前谢谢 我的目标 MVC控制器 是的,它应该是公共的,因为defaultmodelbinder将浏览器请求映射到数据对象。此类提供了模型绑定器的具体实现 DefaultModelBinder类将以下类型的对象映射到浏览器请求: 基本类型,例如字符串、双精度、十进制或日期时间对象 模型类,例如Pe

我使用javascript调用控制器来处理函数。 当字段设置为private时,参数值(摘要中的名称)为null。 当该字段设置为“公共”时,它将起作用。 设置为公共是唯一的方法吗?还是有更好的方法? 提前谢谢

我的目标

MVC控制器


是的,它应该是公共的,因为defaultmodelbinder将浏览器请求映射到数据对象。此类提供了模型绑定器的具体实现

DefaultModelBinder类将以下类型的对象映射到浏览器请求:

基本类型,例如字符串、双精度、十进制或日期时间对象

模型类,例如Person、Address或Product

集合,如ICollection、IList或IDictionary

资料来源:

希望它是有用的,请让我知道你的想法或反馈

谢谢


Karthik

是的,它必须是
public
DefaultModelBinder
初始化模型的实例,然后设置其属性-除非它的
public
,否则无法设置它)
[DataContract]
public class Summary
{
 [DataMember]
 public int id { private set; get; }
 [DataMember]
 public string name { private set; get; }

 public summary() {}

 public summary(int id, string name)
 {
   id = id;
   name = name;
 }

}
public ActionResult SetSummary(Summary summary)
 {
    string anme = summary.name; **<-- null if private**
    ...
 }
$http.post("MyController/SetSummary", JSON.stringify({
            summary: mySummaryObject}))
        .success(function (data, status, headers, config) {
    ....
    }