MVC模型绑定中属性的重要性是什么?

时间:2016-04-07 06:37:54

标签: c# asp.net-mvc model-binding

我有一个执行以下操作的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需要正常工作?

1 个答案:

答案 0 :(得分:0)

事实上它并不重要,基本上是CLR团队的一项设计决定,即在字段上为属性添加更多价值和逻辑。

正如a member of the VB team所说:

  
      
  1. 许多.NET数据绑定基础结构绑定到属性但不绑定字段

         

    我听到双方都争论这是否是一件好事,但现实情况是它现在的运作方式。

  2.