Annotations de données MVC3 attribut Obligatoire
J'ai le Modèle (Utilisateur) ci-dessous, je l'utilise pour ajouter de nouveaux utilisateurs et de mettre à jour les utilisateurs existants.
Quand je suis à l'ajout d'un nouvel utilisateur, il est nécessaire de saisir le nom d'utilisateur et le mot de passe, et quand je suis à jour, il est nécessaire de saisir uniquement le nom d'utilisateur, car il n'est pas permis de changer le mot de passe. Là est le problème, l'ajout d'un nouvel utilisateur tout fonctionne ok parce que j'entrez le nom et le mot de passe, les valeurs ModelState.IsValid retourne vrai, mais lors de la mise à jour d'un utilisateur, il n'y a pas d'entrée pour le mot de passe, donc il ont toujours la valeur null, ce qui rend la ModelState.IsValid renvoie faux tout le temps.
Est-il possible d'utiliser le même modèle, même si dans le Ajouter voir le mot de passe est requis et dans la mise à Jour de la Vue, il ne l'est pas?
s'il vous plaît, des suggestions?
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();
}
OriginalL'auteur Sah | 2013-02-28
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser des modèles de vue.
Votre annotations de données serait alors place sur le modèle de vue étant passé à la vue
et pour modifier
Passer ces classes à votre vue(s), pas votre modèle de domaine(
User
), puis, dans le contrôleur de la carte de la vue propriétés du modèle vers le modèle avant de persister dans votre source de données.Vous devriez avoir un poco, l'Utilisateur; alors que de nombreux modèles de vue que vous avez besoin pour votre point de vue.
Je me le procurer, merci beaucoup!
OriginalL'auteur Forty-Two
J'ai l'habitude de préciser dans mon
BaseViewModel
les éléments à masquer, puis utiliser jQuery pour les cacher. Il peut mess avec votre mise en page, cependant, si vous utilisez plus de "fantaisie" mises en page de mon habitude du haut vers le bas de la colonne de base de mises en page. Masquerform-group
pour chaque élément à être cachés, et les éléments ci-dessous il vient de déplacement vers le haut.Ma ligne principale de travail est LOB intranet, applications, j'ai donc tout ignorer de la fantaisie la plupart du temps.
OriginalL'auteur ProfK