2017-09-26 528 views
1

ASP.NET MVC更改數據庫值我有一個非常簡單的問題。我有一個表單,如果您選中複選框並提交表單,它會將值更改爲true(默認爲false)。目前它不適合我。所以我在問我該怎麼做?當複選框被選中

這裏的一些事情,我該怎麼辦他們。有一個值「IsConfirmed」

public virtual bool IsConfirmed {get;set;} 

而且我有一個簡單的HttpPost方法。

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Edit([Bind(Include = "UserName,Id,Email")] ApplicationUser formuser, string id, string RoleId) 
    { 
     var role = new ApplicationUser() { Id = formuser.Id, Email = formuser.Email, IsConfirmed = formuser.IsConfirmed }; 
     await UserManager.UpdateAsync(role); 
     return RedirectToAction("Index"); 
    } 

這是我的看法

@model CPO.Models.ApplicationUser 
@{ 
ViewBag.Title = "Edit"; 
} 
@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 
@Html.ValidationSummary() 
@Html.HiddenFor(model => model.Id) 

<table class="table table-bordered table-hover"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.Email) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.UserName) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.FirstName) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.LastName) 
     </th> 
    </tr> 
     <tr> 
      <td> 
       @Html.HiddenFor(model => model.Email) 
       @Html.DisplayFor(model => model.Email) 
       @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" }) 
      </td> 
      <td> 
       @Html.HiddenFor(model => model.UserName) 
       @Html.DisplayFor(model => model.UserName) 
       @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" }) 
      </td> 
      <td> 
       @Html.HiddenFor(model => model.FirstName) 
       @Html.DisplayFor(model => model.FirstName) 
      </td> 
      <td> 
       @Html.HiddenFor(model => model.LastName) 
       @Html.DisplayFor(model => model.LastName) 
      </td> 
      <td> 
       @Html.DropDownList("RoleId", "Select Role") 
      </td> 
      <td> 
       @Html.EditorFor(model => model.IsConfirmed) 
      </td> 
      <td> 
       <input type="submit" value="Edit" class="btn btn-default"/> 
      </td> 
     </tr> 
</table> 
} 
@section Scripts { 

@Scripts.Render("~/bundles/jqueryval") 

} 

古怪,但它不工作,我不知道爲什麼,也許我錯過了定義的東西,但該模型得到的它的價值,即使它是假的檢查。


任何幫助,高度讚賞,如果我犯了錯誤,請善待我寫的評論讓他們,我會解決他們

+1

當窗體控件RoleId你調試,其中*完全*是丟失的價值? POST請求中包含什麼?控制器動作收到的'model'對象中有什麼? 'model.ToDomainModel()'的結果是什麼?佣金對象中有什麼? – David

+0

你也可以顯示你的完整剃鬚刀代碼嗎? –

+0

'model.IsConfirmed'的值,如果該複選框是基於你已經顯示的代碼進行覈對將TRUE;。你是指'commission.IsConfirmed'的價值? –

回答

3

您已經從通過結合排除IsConfirmed你的財產使用的BindAttribute

[Bind(Include = "UserName,Id,Email")] 

這意味着僅結合的值屬性UserNameIdEmail

刪除屬性,或將其更改爲包括屬性

[Bind(Include = "UserName, Id, Email, IsConfirmed")] 

還要注意你已經排除性能FirstNameLastName和綁定,所以很少有一點,包括對他們

+0

感謝您的幫助,您非常樂於助人! – HighSepton

相關問題