为什么我总是对模型活页夹有这么多麻烦?我有以下控制器:
namespace X.Web.Controllers
{
public class ExpertsVM
{
public string GivenName;
public string Surname;
}
public class AuthController : Controller
{
[HttpPost]
public ActionResult RegisterExpert(ExpertsVM v)
{
我的观点如下:
@using X.Web.Controllers
@model ExpertsVM
@using (Html.BeginForm("RegisterExpert", "Auth"))
{
@Html.EditorFor(x => x.GivenName)
@Html.EditorFor(x => x.Surname)
所以表单会像这样呈现:
<form action="/Auth/RegisterExpert" method="post">
<input class="text-box single-line" id="GivenName" name="GivenName" type="text" value="" />
<input class="text-box single-line" id="Surname" name="Surname" type="text" value="" />
但是当调用该操作时,v
包含所有空值。如果我宣布这样的行动:
[HttpPost]
public ActionResult RegisterExpert(FormCollection f)
{
我看到了所有的价值......所以我在这里做错了什么?
答案 0 :(得分:6)
我不是100%肯定,但我会使用属性而不是公共领域。
试
public class ExpertsVM
{
public string GivenName {get;set;}
public string Surname {get;set;}
}
答案 1 :(得分:2)
模型绑定器在模型上查找公共属性。 VdesmedT的答案是正确的,但我补充说这是为了强调重点(他不是100%肯定,我是)。
您还可以通过以下方式为自己节省一份使用声明:
@model X.Web.Controllers.ExpertsVM
我赞成了VdesmedT的回答者。你应该将其标记为答案。