我有一个执行以下操作的Ajax查询:
var dataToSend = {
userValueExample: {
name: 'Rintu', email: 'Rintu@gmialsfdfs.com'
}
};
$.ajax({
url: '/Transactions/TestMethod',
type: "POST",
contentType: 'application/json; charset=UTF-8',
data: JSON.stringify(dataToSend),
success: function (data) {
alert(data);
},
error: function (xhr) {
alert('error');
}
})
在c#类中,我有以下内容:
public class UserTest {
public string name { get; set; }
public string email { get; set; }
}
[HttpPost]
public void TestMethod(UserTest userValueExample) {
// Do whatever. Used a breakpoint to see values.
}
现在,上面的工作会很完美,但是我花了很多时间才意识到MVC模型绑定需要{get; set;}才能正常工作..
在此之前,我使用字段:
public class UserTest {
public string name;
public string email;
}
由于某种未知原因而失败,当断点发生命中时,' userValueExample'在TestMethod()
中是默认属性初始化。
为什么属性在这种情况下很重要,为什么ModelBinding需要正常工作?
答案 0 :(得分:0)
事实上它并不重要,基本上是CLR团队的一项设计决定,即在字段上为属性添加更多价值和逻辑。
- 醇>
许多.NET数据绑定基础结构绑定到属性但不绑定字段
我听到双方都争论这是否是一件好事,但现实情况是它现在的运作方式。