ASP.在Html.ValidationMessageFor中.NET MVC排除数据注释属性

本文关键字:排除 数据 注释 属性 MVC NET Html ValidationMessageFor ASP | 更新日期: 2023-09-27 18:14:01

我使用EF-CF,并有以下实体:

国家,公司

公司有一个名为CountryId的属性,带有StringLength属性和最小和最大限制(最小3个字符,最大3个字符,国家id ISO-Alpha-3)。当用户需要创建Company时,我会显示一个包含所有可用国家的html元素。这太完美了!

但是,当我对表单执行jquery验证器时,它会检查3个选定选项,而不是选定选项的长度值。

我需要StringLengthAttribute在我的国家模型,我不能删除它。

我希望在调用中"删除"或"隐藏"StringLengthAttribute:
@Html。ValidationMessageFor(model => model. countryid)

谢谢!

ASP.在Html.ValidationMessageFor中.NET MVC排除数据注释属性

我想我明白你的问题了。一种可能的解决方案是使用ViewModel传递给视图,而不是直接使用Company实体。这将允许您在不更改实体模型的情况下添加或删除数据注释。然后将数据从新的CompanyViewModel映射到Company实体模型并保存到数据库中。

例如,Company实体可能看起来像这样:

public class Company
{
    public int Id { get; set; }
    [StringLength(25)]
    public string Name { get; set; }
    public int EmployeeAmount { get; set; }
    [StringLength(3, MinimumLength = 3)]
    public string CountryId {get; set; }
}

现在在MVC项目中,ViewModel可以像Company实体一样构造:

public class CompanyViewModel
{
    public int Id { get; set; }
    [StringLength(25, ErrorMessage="Company name needs to be 25 characters or less!")]
    public string Name { get; set; }
    public int EmployeeAmount { get; set; }
    public string CountryId { get; set; }
}

使用ViewModel意味着可以添加更多面向视图表示的注释,而不会重载带有不必要标记的实体。

我希望这对你有帮助!

准备好了!

删除html控件的规则。

$ (" # @ (Html。htmlnamefor (model => model. countryid))").rules("remove", " rangelth ");

"rangelength"是StringLengthAttribute的jquery验证规则。

,"Html。htmlnamefor "是一个获取ASP生成的"Id"的助手。净MVC。
查看如何获得由asp.net MVC EditorFor

生成的HTML id