2016-08-21 26 views
1

我正在嘗試創建用於更新用戶信息的表單。我使用類型視圖模型類用戶:保存表單正在拋出異常[參數異常「已添加相同項的項目」]

public class User : MembershipUser, IEntity 
    { 
     public virtual int Id { get; set; } 
     public virtual string Username { get; set; } 
     public virtual string Password { get; set; } 
     public virtual string Name { get; set; } 
     public virtual string Surname { get; set; } 
     public virtual Role Role { get; set; } 
     public virtual string ProfileImage { get; set; } 
     public virtual string About { get; set; } 

    } 

的看法是這樣的:

using (Html.BeginForm("SaveUser", "BlogUser", FormMethod.Post, new { @class = "form-horizontal", enctype = "multipart/form-data" })) 
{ 
    <div class="form-group"> 
     @Html.HiddenFor(x => x.Id) 
     @Html.HiddenFor(x => x.ProfileImage) 
     @Html.HiddenFor(x => x.UserName) 
     @Html.HiddenFor(x => x.Password) 
     @Html.HiddenFor(x => x.Role) 
     <div class="col-sm-10"> 
      <label>Jméno</label> 
     </div> 
     <div class="col-sm-10"> 
      @Html.TextBoxFor(x => x.Name, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(x => x.Name) 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-sm-10"> 
      <label>Příjmení</label> 
     </div> 
     <div class="col-sm-10"> 
      @Html.TextBoxFor(x => x.Surname, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(x => x.Surname) 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-sm-10"> 
      <label>Profilový obrázek</label> 
     </div> 
     <div class="col-sm-10"> 
      <input type="file" name="picture" /> 
      @if (!String.IsNullOrEmpty(Model.ProfileImage)) 
       { 
       <img src="@Url.Content("~/Upload/UserImages/" + Model.ProfileImage)" /> 
      } 
     </div> 
    </div> 
     <div class="form-group"> 
      <div class="col-sm-10"> 
       <label>Něco o mně</label> 
      </div> 
      <div class="col-sm-10"> 
       @Html.TextAreaFor(x => x.About, new { @class = "form-control formatedText", @rows = 20 }) 
       @Html.ValidationMessageFor(x => x.About) 
      </div> 
     </div> 
      <div class="form-group"> 
       <div class="col-sm-10"> 
        <button type="submit" class="btn btn-primary btn-lg btn-block">Uložit</button> 
       </div> 
      </div> 
} 

我得到正確的用戶,我已經預填充柱與右側的詳細信息,但提交後它會拋出異常[參數異常「帶有相同密鑰的項目已被添加」]。我甚至不會觸發SaveUser()控制器方法,所以我可以至少調試它。我無法弄清楚問題出在哪裏。你可以幫我嗎?

回答

0

我想通了。我在父母類MembershipUser中擁有名爲username的屬性。

0

你可以嘗試以下解決方案:An item with the same key has already been added

現在看來似乎是模型包含兩次相同的屬性,您可能希望從性質取出虛擬關鍵字,如果它是沒有必要的。

另請參閱:https://msdn.microsoft.com/en-us/library/9fkccyh4.aspx

+0

你可能會有點困惑'虛擬'和'新',後者在鏈接的SO答案中提到 - 使用虛擬和重寫而不是'new'實際上是由該答案建議的,而不是'new'它*防止*雙重屬性。另外,它沒有明確說明,但考慮到標籤「虛擬」可能是NHibernate的最佳功能。 –

相關問題