gpt4 book ai didi

jquery - 对 ASP.NET MVC 4 中整个 View 模型进行不显眼的验证

转载 作者:行者123 更新时间:2023-12-01 04:13:54 25 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 4 应用程序,我希望对 View 模型的多个属性进行不显眼的验证。这是一个简化版本:

View 模型:

[AtLeastOne(new[] {"FirstName", "LastName"})]
public class PersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

验证属性:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class AtLeastOneAttribute : ValidationAttribute, IClientValidatable
{
private readonly string[] _propertyNames;

public AtLeastOneAttribute(string[] propertyNames)
{
if (propertyNames == null) throw new ArgumentNullException("propertyNames");
if (propertyNames.Length < 2) throw new ArgumentOutOfRangeException("propertyNames");
_propertyNames = propertyNames;
}

public override bool IsValid(object value)
{
return true;
}

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var modelClientValidationRule = new ModelClientValidationRule
{
ErrorMessage = "AAAAA!!!",
ValidationType = "atleastone",
};
modelClientValidationRule.ValidationParameters.Add(new KeyValuePair<string, object>("propertynames", _propertyNames));
return new[]
{
modelClientValidationRule
};
}
}

虽然我有:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

在 Web.config 和

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
jQuery.validator.unobtrusive.adapters.add("atleastone", ['FirstName', 'LastName'], function (options) {
alert('options!');
});
</script>

在我看来,此验证不会呈现任何内容。例如,如果我为 FirstName 或 LastName 添加 [Required],则会添加 data-* 验证属性。

如何实现这种多属性自定义客户端验证?

想看/DOWNLOAD THE WHOLE SOLUTION

最佳答案

在客户端添加自定义验证器分为两步:

  1. 首先,您需要注册您的验证器(让unobtrusive框架知道此类验证存在 - 但不添加验证函数本身),就像您在 jQuery.validator.unobtrusive.adapters.add 中所做的那样。您必须记住该函数(第三个参数)不是验证器,它仅用于规则配置(在您的情况下可以省略)。

  2. 添加验证器本身:

    jQuery.validator.addMethod("atleastone", 函数(值、元素、参数)
    {
    警报(“验证‘atleastone’”);
    });

关于jquery - 对 ASP.NET MVC 4 中整个 View 模型进行不显眼的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com