嘿,问题是ASP.NET MVC 2中的编辑控制器不起作用。我尝试了很多方法,没有任何作用。
以下是示例代码:
[Authorize]
public ActionResult Edit() {
var edit = new UserViewModel {
User = Database.Users.Single(u => u.UserName == User.Identity.Name)
};
return View(edit);
}
[Authorize]
[HttpPost]
public ActionResult Edit(FormCollection formCollection) {
var edit = new UserViewModel {
User = Database.Users.Single(u => u.UserName == User.Identity.Name)
};
// TODO: try, catch
UpdateModel(edit, "User");
Database.SaveChanges();
return View(edit);
}
这是一个视图模型类:
public class UserViewModel {
public User User { get; set; }
}
如何将此用户模型更新为数据库?我只使用电子邮件字段的那一刻:
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm()) {%>
<div>
<div class="UserFieldLeft"><%: Html.LabelFor(model => model.User.Email) %></div>
<div class="UserFieldRight"><%: Html.TextBoxFor(model => model.User.Email, new { style="width: 200px" }) %></div>
<div class="UserFieldHelper"><%: Html.ValidationMessageFor(model => model.User.Email) %></div>
<p><input class="UserFieldInput" type="submit" value="Zmień email" /></p>
</div>
<% } %>
如果我在本机用户模型上工作,它也不起作用。怎么了?我在哪里弄错了?
顺便说一句,我要使用视图模型为我的用户添加(将来)一些复选框(头发颜色,长度等)。
感谢您的时间和帮助。
答案 0 :(得分:0)
您不需要前缀“用户”。
UpdateModel(edit);
应该有效。在formsCollection中,它们应该是User.Email的密钥。这应该映射到用户对象中的Email属性。