在下面的代码中,我的'tc'对象在发布后已初始化,但值为null。问题的根本原因是什么?为什么默认模型绑定程序不会尝试使用传入的已发布值填充属性?默认模型绑定器必须具有哪些限制?
<form id="hello-world" action="/Home/Index">
<label for="user">User </label>
<input id="user" type="text" name="user" required="required">
<label for="city"> City </label>
<input id="city" type="text" name="city" required="required">
<label for="age"> Age </label>
<input id="age" type="text" name="age" required="required">
<input type="submit" value="Submit">
</form>
public ActionResult Index(TestClass tc)
{
ViewBag.TCName = tc.user; // its null
ViewBag.TCAge = tc.age; // its null
ViewBag.TCCity = tc.city; // its null
return View();
}
public class TestClass
{
public string user;
public string city;
public string age;
}
答案 0 :(得分:2)
您应该在视图模型上使用properties
而不是fields
:
public class TestClass
{
public string User { get; set; }
public string City { get; set; }
public string Age { get; set; }
}
默认模型绑定器只能绑定到具有公共getter / setter的属性,而不能绑定到字段。它只是忽略了字段,它们永远不会被初始化。