模型绑定器问题

本文关键字:问题 绑定 模型 | 更新日期: 2023-09-27 18:10:25

为什么我在使用模型活页夹时总是遇到这么多麻烦?我有以下控制器:

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包含所有null。如果我像这样声明动作:

[HttpPost]
public ActionResult RegisterExpert(FormCollection f)
{

我看到所有的值…我哪里做错了?

模型绑定器问题

我不是100%确定,但我会使用属性而不是公共字段。

public class ExpertsVM
{
    public string GivenName {get;set;}
    public string Surname {get;set;}
}

模型绑定器查找模型上的公共属性。VdesmedT的答案是正确的,但我加上这一点是为了强调这一点(他不是100%确定,我是)。

你也可以这样做:

@model X.Web.Controllers.ExpertsVM

我给VdesmedT的回答点了赞。你应该把它标记为答案。