输入字段始终发送空值

时间:2017-01-19 13:05:57

标签: asp.net-mvc

我的注册表单中有3个输入字段(用户名,电子邮件和密码)。所有这些都是强制性的。但看起来用户名字段总是向控制器发送空值,我得到意外的验证消息。任何帮助,将不胜感激。附:休息2场很好

HTML:

@using (Html.BeginForm("Create", "Registration", FormMethod.Post)) 
{
 @Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Registration Form</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
        </div>
    </div>

控制器:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Name,Email,Password")] UserRegistration userRegistration)
    {
        if (ModelState.IsValid)
        {
            db.UserSet.Add(userRegistration);
            db.SaveChanges();
            return View("Index");
        }

        return View(userRegistration);
    }

1 个答案:

答案 0 :(得分:0)

我想您需要更改Bind注释以包含UserName而不是Name属性

public ActionResult Create([Bind(Include = "UserName,Email,Password")] UserRegistration userRegistration)

当您使用Bind Attribute时,您定义了mvc引擎应允许(包括)绑定的属性名称列表。 UserRegistration模型明确具有名为UserName的属性,并且在名称的绑定列表

中不允许使用此属性