asp.net-mvc-3 – 数据注释MVC3必需属性
发布时间:2020-12-16 06:26:23 所属栏目:asp.Net 来源:网络整理
导读:我有下面的模型(用户),我用它来添加新用户和更新现有用户. 当我添加新用户时,需要输入用户名和密码,当我更新时,只需要输入用户名,因为不允许更改密码.这是问题,添加一个新用户一切正常,因为我输入了名称和密码值,因此ModelState.IsValid返回true,但更新用户
我有下面的模型(用户),我用它来添加新用户和更新现有用户.
当我添加新用户时,需要输入用户名和密码,当我更新时,只需要输入用户名,因为不允许更改密码.这是问题,添加一个新用户一切正常,因为我输入了名称和密码值,因此ModelState.IsValid返回true,但更新用户时没有输入密码,所以它始终具有null值是什么使得ModelState.IsValid始终返回false. 有没有办法使用相同的模型,即使在添加视图中需要密码,在更新视图中它不是? 拜托,有什么建议吗? public class User { public int ID { get; set; } [Display(Name = "Nome do Usuário")] [Required(ErrorMessage = "Digite o Nome do Usuário.")] public string name { get; set; } [Display(Name = "Senha")] [Required(ErrorMessage = "Digite a Senha.")] public string password { get; set; } } public ActionResult Add() { return View(); } [HttpPost] public ActionResult Add(User user) { UsuariosViewModel viewModel = new UsuariosViewModel(); if (ModelState.IsValid) { viewModel.Msg = new AdmUsuarios().CadastraUsuario(user); } return View(viewModel); } public ActionResult Update(int id) { UsuariosViewModel viewModel = new UsuariosViewModel(); using (var dataContext = new DBEntities()) { Repository<User> repository = new Repository<User>(dataContext); viewModel.User = repository.GetById(id); } return View(viewModel); } [HttpPost] public ActionResult Update(User user,int id) { UsuariosViewModel viewModel = new UsuariosViewModel(); if (ModelState.IsValid) { viewModel.Msg = new AdmUsuarios().AlteraUsuario(user,id); } return View(); } 解决方法
您应该使用视图模型.
然后,您的数据注释将属于传递给视图的视图模型 public class CreateViewModel { public int ID { get; set; } [Display(Name = "Nome do Usuário")] [Required(ErrorMessage = "Digite o Nome do Usuário.")] public string name { get; set; } [Display(Name = "Senha")] [Required(ErrorMessage = "Digite a Senha.")] public string password { get; set; } } 并编辑 public class EditViewModel { public int ID { get; set; } [Display(Name = "Nome do Usuário")] [Required(ErrorMessage = "Digite o Nome do Usuário.")] public string name { get; set; } //perhaps you don't need the password at all in the edit view } 将这些类传递给您的视图,而不是您的域模型(用户),然后在控制器中将视图模型属性映射回模型,然后再保留到数据源. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用Razor视图引擎 – 如何格式化十进制值以
- asp.net-mvc-2 – 如何在不设置Content-Disposition标签的情
- asp.net-mvc – ASP.NET MVC 4 Datagrid
- asp.net-core – 如何将值更新到appsetting.json?
- js_jquery_创建cookie有效期问题_时区问题
- asp.net-mvc – 从mvc 4(4.5)升级到mvc 5(4.5.1)
- asp.net-mvc – 什么时候应该在asp.net mvc中使用部分视图?
- asp.net-mvc – ASP.Net MVC 5 w /身份2.2.0注销不工作
- Asp.net web API日期时间格式
- ASP.NET -- WebForm -- 页面生命周期
推荐文章
站长推荐
- asp.net-mvc – 如何在我的项目中实现强大的每个
- asp.net-mvc – asp.net mvc多参数动态图像请求?
- asp.net-mvc – ASP.NET MVC 4 Catch-all仅在本地
- asp.net-mvc – 动态加载的程序集中的强类型Razo
- asp.net-mvc – 在Windows Creators Update之后,
- asp.net-mvc-2 – 抛出间歇性错误,“所需的防伪令
- .net – Umbraco Yay还是Nay?
- asp.net – webservice和web应用程序有什么区别?
- asp.net – 服务栈:类型定义应该以'{‘开头
- 在Entity Framework中使用存储过程(四):如何为
热点阅读