javascript 当对象字段为私有时,调用 MVC 控制器参数始终为 null
javascript call MVC Controller parameter always null when object field is private
我用javascript调用controller来处理一个函数。
当字段设置为私有时,参数值(摘要中的名称)为空。
该字段设置为 public 时有效。
是设置为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;
}
}
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) {
....
}
是的,它应该是 public 因为 defaultmodelbinder 将浏览器请求映射到数据对象。 class 提供了模型绑定器的具体实现。
DefaultModelBinder class 将以下类型的对象映射到浏览器请求:
原始类型,例如 String 、 Double 、 Decimal 或 DateTime 对象。
模型class,例如人物、地址或产品。
集合,例如 ICollection、IList 或 IDictionary。
来源:https://msdn.microsoft.com/en-us/library/system.web.mvc.defaultmodelbinder(v=vs.118).aspx
希望对您有用,请告诉我您的想法或反馈
谢谢
卡尔提克
我用javascript调用controller来处理一个函数。 当字段设置为私有时,参数值(摘要中的名称)为空。 该字段设置为 public 时有效。 是设置为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;
}
}
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) {
....
}
是的,它应该是 public 因为 defaultmodelbinder 将浏览器请求映射到数据对象。 class 提供了模型绑定器的具体实现。
DefaultModelBinder class 将以下类型的对象映射到浏览器请求:
原始类型,例如 String 、 Double 、 Decimal 或 DateTime 对象。
模型class,例如人物、地址或产品。
集合,例如 ICollection、IList 或 IDictionary。
来源:https://msdn.microsoft.com/en-us/library/system.web.mvc.defaultmodelbinder(v=vs.118).aspx
希望对您有用,请告诉我您的想法或反馈
谢谢
卡尔提克