以下にモデル(ユーザー)があり、それを使用して新しいユーザーを追加し、既存のユーザーを更新します。新しいユーザーを追加するときはユーザー名とパスワードを入力する必要があり、更新するときはパスワードの変更が許可されていないため、ユーザー名のみを入力する必要があります。ここに問題があります。新しいユーザーを追加すると、名前とパスワードの両方の値を入力して 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();
}