gpt4 book ai didi

asp.net-mvc-3 - 数据注释 MVC3 必需属性

转载 作者:行者123 更新时间:2023-12-01 17:58:41 25 4
gpt4 key购买 nike

我有下面的模型(用户),我用它来添加新用户并更新现有用户。当我添加新用户时,需要输入用户名和密码,当我更新时,只需要输入用户名,因为不允许更改密码。问题是,添加新用户一切正常,因为我输入了名称和密码值,因此 ModelState.IsValid 返回 true,但是在更新用户时没有输入密码,因此它始终具有空值,这使得ModelState.IsValid 始终返回 false。有没有办法使用相同的模型,即使在“添加 View ”中需要密码而在“更新 View ”中不需要密码?请问,有什么建议吗?

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

最佳答案

您应该使用 View 模型。

您的数据注释将属于传递给 View 的 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
}

将这些类传递给您的 View ,而不是域模型(User),然后在 Controller 中将 View 模型属性映射回模型,然后再保留到数据源。

关于asp.net-mvc-3 - 数据注释 MVC3 必需属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15142947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com