2017-01-19 135 views
0

我在我的註冊表單中有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); 
    } 
+0

在模型中,你有一個用戶名屬性的綁定列表允許的,但您包括一個屬性稱爲名稱,而不是一個名爲username – Steve

+0

變化在控制器綁定到'用戶名,電子郵件,密碼''(由於@Steve給出的理由) – bolt19

回答

0

我想你需要更改綁定註釋,包括用戶名,而不是名稱屬性

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

當您使用Bind Attribute時,您可以定義屬性名稱列表mvc引擎應該允許(包含)綁定。該放在userRegistration模型具有明確的屬性命名爲用戶名和該屬性沒有在名稱