我正在嘗試創建用於更新用戶信息的表單。我使用類型視圖模型類用戶:保存表單正在拋出異常[參數異常「已添加相同項的項目」]
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()控制器方法,所以我可以至少調試它。我無法弄清楚問題出在哪裏。你可以幫我嗎?
你可能會有點困惑'虛擬'和'新',後者在鏈接的SO答案中提到 - 使用虛擬和重寫而不是'new'實際上是由該答案建議的,而不是'new'它*防止*雙重屬性。另外,它沒有明確說明,但考慮到標籤「虛擬」可能是NHibernate的最佳功能。 –