www visual update tools studio packs net mvc4 mvc language instalar asp asp.net-mvc-3 model data-annotations modelstate

asp.net mvc 3 - visual - Anotaciones de datos atributo requerido MVC3



mvc 4+ (2)

Deberías usar modelos de vista.

Sus anotaciones de datos deberían pertenecer al modelo de vista que se pasa a la vista

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; } }

y para editar

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 }

Pase estas clases a su (s) vista (s), no a su modelo de dominio ( User ), luego, en el controlador, vuelva a asignar las propiedades del modelo de vista al modelo antes de continuar en su origen de datos.

Tengo el Modelo (Usuario) a continuación, lo uso para agregar usuarios nuevos y actualizar usuarios existentes. Cuando agrego un nuevo usuario, se requiere ingresar el nombre de usuario y la contraseña, y cuando estoy actualizando, se requiere ingresar solo el nombre de usuario porque no está permitido cambiar la contraseña. Aquí está el problema, agregando un nuevo usuario todo funciona bien porque ingreso los valores de nombre y contraseña para que ModelState.IsValid devuelva verdadero, pero al actualizar un usuario no hay entrada para la contraseña, por lo que siempre tiene el valor nulo que hace que ModelState.IsValid devuelve falso todo el tiempo. ¿Hay alguna manera de usar el mismo modelo aunque en Agregar Vista se requiera la contraseña y en la Vista de Actualización no? por favor, alguna sugerencia?

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(); }


Normalmente especifico en mi BaseViewModel qué elementos ocultar, luego uso jQuery para ocultarlos. Sin embargo, puede interferir con su diseño si utiliza diseños más ''elegantes'' que mis diseños habituales de arriba a abajo basados ​​en columnas. Ocultar form-group de form-group para cada elemento que se ocultará, y los elementos debajo solo se desplazarán hacia arriba.

Mi principal línea de trabajo son las aplicaciones de intranet LOB, así que omito todas las fantasías la mayor parte del tiempo.