我刚刚在我的 MVC 应用程序中遇到了一个小错误。
管理员可以编辑用户配置文件。包括用户所在的角色。
所以我有一个“EditUser”的ViewModel:
public class EditUserViewModel
{
public User User { get; set; }
public IEnumerable<SelectListItem> PossibleRoles { get; set; }
public int[] SelectedRoles { get; set; }
}
因此,在我的 EditUser.cshtml 页面上,我只需运行一个 @Html.EditorFor(Model => model.User) 根据我的 MetaData 类的限制生成所需的字段。
在那里,例如,我做了这样的注释:
[ScaffoldColumn(false)]
public string Password { get; set; }
这样做的问题是,当我回发我的编辑表单时,设置为 Scaffold false 的值是空的。这似乎有点合乎逻辑,因为这些属性没有编辑框。
所以当我保存我的实体时,它会用 null 覆盖值。(例如,如果我更新用户名并保存,用户的密码被 null 覆盖并且 EF 抛出错误)有什么方法可以自动更新值(根据我能够编辑的值(MetaDataClasses)? ) ? 否则,如果我将它们复制到从实体框架中新获取的实体中,并且我应该将注释更改为 Scaffold(false),我需要在代码中添加一条规则,以便将新值复制到实体中。这似乎是错误的。
提前致谢。