gpt4 book ai didi

c# - 是否可以禁用 MVC 中单个模型属性的客户端验证

转载 作者:太空狗 更新时间:2023-10-30 00:51:56 25 4
gpt4 key购买 nike

我有一个 MVC 4 模型,我正在使用 @Html.TextBoxFor 在 View 中从它创建 html。在其中一个字段的模型中,我有一个 RegularExpression 属性定义如下:

[Required(ErrorMessageResourceType=typeof(ResourceFile), ErrorMessageResourceName="ResourceName1"
[RegularExpression(@"\w{3,5}", ErrorMessageResourceType=typeof(ResourceFile), ErrorMessageResourceName="ResourceName2")]
public string TestProperty { get; set; }

请注意表达式比这更复杂,但我这里的内容适合测试。我已经设置了不显眼的客户端验证,如下所述:http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

我遇到的问题是我需要接受俄语字符。 .Net 的正则表达式对于\w 与 javascript 的正则表达式具有不同的含义,因此服务器端验证工作如我所料,而客户端则不然。

是否可以在不关闭 Required 属性的情况下关闭 RegularExpression 属性的客户端验证?

如果做不到这一点,是否可以只关闭此单个属性的客户端验证而不关闭该模型对象上的所有其他属性?

最佳答案

创建您自己的服务器端唯一正则表达式属性。从 RegularExpressionAttribute 派生它但不实现 IClientValidatable。你只需要实现构造函数。如果没有 IClientValidatable,客户端验证器将不会连接。由于此属性只是正则表达式属性,所有服务器端验证将继续按照 RegularExpressionAttribute 提供的方式工作。

public class ServerSideOnlyRegularExpressionAttribute : RegularExpressionAttribute
{
public ServerSideOnlyRegularExpressionAttribute(string pattern)
: base(pattern)
{
}
}

用作

[Required(ErrorMessageResourceType=typeof(ResourceFile), ErrorMessageResourceName="ResourceName1"
[ServerSideOnlyRegularExpression(@"\w{3,5}", ErrorMessageResourceType=typeof(ResourceFile), ErrorMessageResourceName="ResourceName2")]
public string TestProperty { get; set; }

关于c# - 是否可以禁用 MVC 中单个模型属性的客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24248440/

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