gpt4 book ai didi

asp.net-mvc - 从 ASP.NET MVC 3 中的必需属性继承时,客户端验证不起作用?

转载 作者:行者123 更新时间:2023-12-04 18:52:00 27 4
gpt4 key购买 nike

我在 ASP.NET MVC3 中创建了一个这样的继承属性:

public sealed class RequiredFromResourceAttribute : RequiredAttribute
{
public RequiredFromResourceAttribute(string errorResourceName, string errorResourceTypeName)
{
this.ErrorMessageResourceName = errorResourceName;
this.ErrorMessageResourceType = Type.GetType(errorResourceTypeName);
}
}

并像这样使用它:
[RequiredFromResource("Title", "Resources.Resource, MyProject.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")]
public string Title { get; set; }

它不起作用,MVC 忽略了它。然后我创建一个更简单的类,它只是从 RequiredAttribute 继承的,如下所示:
public class MyRequiredAttribute : RequiredAttribute
{
}

我就像我说的那样使用它。但它再次不起作用。

尽管如此,所有这些方式都可以完美地应用于“DisplayNameAtrribute”。

问题是什么?

最佳答案

它只是不适用于继承属性的客户端验证。原因是 MVC 在将服务器端属性映射到客户端验证行为时使用了严格的类型相等。

要解决此问题,您需要自定义属性来实现 IClientValidatable :

public class MyRequiredAttribute : IClientValidatable {
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) {
yield return new ModelClientValidationRequiredRule();
}
}

关于asp.net-mvc - 从 ASP.NET MVC 3 中的必需属性继承时,客户端验证不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749657/

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