JavaScript调用MVC控制器参数始终为空当对象字段是私人的

问题描述:

我使用JavaScript调用控制器来处理函数。 当字段设置为私有时,参数值(摘要中的名称)为空。 它在该字段设置为公共时起作用。 是公开的唯一途径吗?或者有更好的方法来做到这一点? 在此先感谢。JavaScript调用MVC控制器参数始终为空当对象字段是私人的

我的目标

[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; 
} 

} 

MVC控制器

public ActionResult SetSummary(Summary summary) 
{ 
    string anme = summary.name; **<-- null if private** 
    ... 
} 

的Javascript

$http.post("MyController/SetSummary", JSON.stringify({ 
      summary: mySummaryObject})) 
     .success(function (data, status, headers, config) { 
    .... 
    } 
+1

是的,它必须是'public'(了'DefaultModelBinder'初始化一个你的模型的实例,然后设置它的属性 - 它不能设置它,除非它的'public') –

烨,应该是公众B ecause defaultmodelbinder将浏览器请求映射到数据对象。这个类提供了一个模型绑定器的具体实现。

的DefaultModelBinder类中的下列对象类型映射到一个浏览器请求:

基本类型,如String,双人,十进制,或日期时间的对象。

模型类,例如Person,Address或Product。

集合,如ICollection,IList或IDictionary。

来源:https://msdn.microsoft.com/en-us/library/system.web.mvc.defaultmodelbinder(v=vs.118).aspx

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

感谢

KARTHIK