避免关系类的模型验证

本文关键字:模型 验证 关系 | 更新日期: 2023-09-27 18:16:25

我的类Usario的视图强类型定义如下

public partial class Usuario
{
    public Usuario()
    {
        this.Campana = new HashSet<Campana>();
    }
    public int IDUsuario { get; set; }
    public int IDPerfil_FK { get; set; }
    public string Nombre { get; set; }
    public string Password { get; set; }
    public bool Activo { get; set; }
    public virtual Perfil Perfil { get; set; }
    public virtual ICollection<Campana> Campana { get; set; }
}

现在我想知道的是如何避免与视图中Usuario类相关的类campana的验证,因为当我执行ModelState.IsValid时,模型验证类Usuario和类campana的属性

避免关系类的模型验证

正确的方法是使用视图模型。

你已经有了Usuario类,现在你实现视图模型,它将只持有你想传递给视图的属性。比如:

public class UsuarioProfileViewModel
{
    public int IDUsuario { get; set; }
    public string Nombre { get; set; }
    public bool Activo { get; set; }
    // Other properties for that view
}

现在在控制器上:

public ActionResult UsuarioProfile(UsuarioProfileViewModel model) {
{
    // Fill the missing properties for the model (when needed)
    View(model);
}

这样您只传递给视图所需的数据。数据注释在视图模型中的工作方式与其他类完全相同。

model由MVC初始化,属性填充传入数据,通过routeValues,所以你可以这样做:

@Html.Action("UsuarioProfile", new { UsuarioID = 10 })