簡體   English   中英

是否可以在MVC中禁用單個模型屬性的客戶端驗證

[英]Is it possible to disable client side validation for a single model property in MVC

我有一個MVC 4模型,並使用@ Html.TextBoxFor在視圖中創建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的正則表達式對於\\ j到javascript的正則表達式具有不同的含義,因此服務器端驗證的工作方式與我預期的相同,而客戶端則不然。

是否可以關閉RegularExpression屬性的客戶端驗證而不關閉Required屬性?

如果不這樣做就可以關閉這個單一屬性的客戶端驗證而不關閉該模型對象上的所有其他屬性?

僅創建自己的服務器端正則表達式屬性。 從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; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM