1

假设我得到了以下实体框架“Ruimte”模型:

public class Ruimte
{
    #region Constructor

    public Ruimte()
    {
        Kenmerken = new List<Kenmerk>();
    }

    #endregion

    #region Properties

    [Key]
    public int Id
    {
        get;
        set;
    }

    [Required]
    public string Naam
    {
        get;
        set;
    }


    public List<Kenmerk> Kenmerken
    {
        get;
        set;
    }

    #endregion
}

“Kenmerk”模型如下所示:

public class Kenmerk
{
    #region Properties

    [Key]
    public int Id { get; set; }

    public KenmerkOptie KenmerkOptie
    {
        get;
        set;
    }

    [Required]
    public int KenmerkOptieId
    {
        get;
        set;
    }

    [Required]
    public string Waarde
    {
        get;
        set;
    }

    [Required]
    public int RuimteId
    {
        get;
        set;
    }

    #endregion
}

在我的 Ruimte/Create 视图中,有 2 个字段用于添加“Kenmerk”。现在,如果没有 KenmerkOptieId 或 Waarde,“Kenmerk”就无法进入数据库。因此,由于验证,每次我尝试发布表单时,视图都会拒绝提交。虽然我希望“Ruimte”拥有或不拥有“Kenmerk”。

因此,我采用的解决方案是拥有一个具有所需属性“名称”的“RuimteCreateViewModel”以及另一个名为“KenmerkCreateViewModel”的 coplex 类的列表。现在在最后一个视图模型中,不需要 KenmerkOptieId 和 Waarde,所以我终于可以提交表单了。

尽管我认为这不是“跳过”所需字段验证器的最佳解决方案。那么当数据库验证与视图验证不同时,您的“最佳实践”是什么?

4

1 回答 1

1

我认为 xVal - ASP.NET MVC 的验证框架,请参阅http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/对实体非常有用您正在尝试开发的框架模型。特别是使用强制服务器端验证,它允许您选择在属性设置器期间验证简单的属性格式化规则。有关说明,请参阅http://blog.stevensanderson.com/2008/09/08/thoughts-on-validation-in-aspnet-mvc-applications/

于 2012-12-11T10:46:10.260 回答