避免关系类的模型验证

时间:2011-12-02 19:44:10

标签: c# asp.net-mvc-3

我有查看强类型的我的班级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班级的

1 个答案:

答案 0 :(得分:1)

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

您已经拥有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 })