【问题标题】:ASP.NET MVC - ViewModel validation best practicesASP.NET MVC - ViewModel 验证最佳实践
【发布时间】:2023-03-12 19:57:01
【问题描述】:

假设我得到了以下实体框架“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”,其中包含所需的属性“Name”以及另一个名为“KenmerkCreateViewModel”的 coplex 类的列表。现在在最后一个视图模型中,不需要 KenmerkOptieId 和 Waarde,所以我终于可以提交表单了。

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

【问题讨论】:

    标签: asp.net-mvc entity-framework viewmodel


    【解决方案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/。

    【讨论】:

    • 您提供的链接看起来很棒,我会在接受问题之前进一步研究它们。感谢您的回复,如果这是我正在寻找的,我会回来告诉您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多