2016-10-12 13 views
-1

ビューにバインドされたモデルがあります。私は特定の入力フィールドにRegEx属性を追加しようとしています。私がそれをすれば、それは私にこれを与えます:DataAnnotationsの検証によってArgumentNullExceptionが発生しました

EventName="MessageEvent" Message="Unhandled ArgumentNullException in Papaya.Web.Controllers.CompanyController Update 
ArgumentNullException: Value cannot be null. 
Parameter name: value 
at 
at System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value) 

RegularExpresion属性が設定されていない場合、正常に動作します。ここにモデルがあります:

[Required(ErrorMessageResourceName = nameof(Company_Resources.RequiredName), ErrorMessageResourceType = typeof(Company_Resources))] 
[RegularExpression(Helpers.InputValidationStringLetters, ErrorMessageResourceName = nameof(Common_Resources.emsgInputValidationStringLetters), ErrorMessageResourceType = typeof(Common_Resources))] 
[Display(Name = nameof(Company_Resources.NameLbl), ResourceType = typeof(Company_Resources))] 
public virtual string Name { get; set; } 

[CorporateIdentityNumber(ErrorMessageResourceName = nameof(Customer_Resources.vmsgInvalidCorporateIdentityNumber), ErrorMessageResourceType = typeof(Customer_Resources))] 
    [RegularExpression(Helpers.InputValidationStringNumbers, ErrorMessageResourceName = nameof(Common_Resources.emsgInputValidationStringNumbers), ErrorMessageResourceType = typeof(Common_Resources))] 
    [Display(Name = nameof(Company_Resources.CompanyRegSocialSecurityNoLbl), ResourceType = typeof(Company_Resources))] 
    public virtual string CompanyRegSocialSecurityNo { get; set; } 

    [Display(Name = nameof(Company_Resources.lblAddress1), ResourceType = typeof(Company_Resources))] 
    [RegularExpression(Helpers.InputValidationStringLettersNumbersDots, ErrorMessageResourceName = nameof(Common_Resources.emsgInputValidationStringLettersNumbersDots), ErrorMessageResourceType = typeof(Common_Resources))] 
    public virtual string Address1 { get; set; } 

    [Display(Name = nameof(Company_Resources.lblAddress2), ResourceType = typeof(Company_Resources))] 
    [RegularExpression(Helpers.InputValidationStringLettersNumbersDots, ErrorMessageResourceName = nameof(Common_Resources.emsgInputValidationStringLettersNumbersDots), ErrorMessageResourceType = typeof(Common_Resources))] 
    public virtual string Address2 { get; set; } 

    [Display(Name = nameof(Company_Resources.ZipCodeLbl), ResourceType = typeof(Company_Resources))] 
    [RegularExpression(Helpers.InputValidationStringNumbers, ErrorMessageResourceName = nameof(Common_Resources.emsgInputValidationStringNumbers), ErrorMessageResourceType = typeof(Common_Resources))] 
    public virtual string ZipCode { get; set; } 

    [Display(Name = nameof(Company_Resources.CityLbl), ResourceType = typeof(Company_Resources))] 
    [RegularExpression(Helpers.InputValidationStringLetters, ErrorMessageResourceName = nameof(Common_Resources.emsgInputValidationStringLetters), ErrorMessageResourceType = typeof(Common_Resources))] 
    public virtual string City { get; set; } 

    [Display(Name = nameof(Company_Resources.PhoneLbl), ResourceType = typeof(Company_Resources))] 
    public virtual string Phone { get; set; } 

私に何かが不足していますか?

編集: 1つの表示値で、リソースからの文字列を使用しました。これはnullだったため、エラーです。みんなありがとう!

+0

これは私があなたと私の知識を共有する私の専門ではありませんが。このArgument Null Exceptionは、関数が動作するためにヌルであるべきではない値を持っていると言っています。関数に渡す前にその変数を何かに設定していないことは明らかです。 null引数の例外が発生する場所を示します。これは、実際の関数がどこにあるのかを示します。System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value)。文字列Valueがnullであることを示します。あなたのコードのどこにset_DisplayNameがあるのですか? –

答えて

0

試してみてください。

[RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Use letters only please")] 
    string TextBoxData { 
     get; 
     set; 
    } 

と以下のように適用されます。

@Html.EditorFor(model => model.TextBoxData) 
@Html.ValidationMessageFor(model => model.TextBoxData) 
0

ここで、プロパティ\フィールドに値を割り当てますか?

Helpers.InputValidationStringNumbers 

の割り当ては、静的コンストラクタ内であるか、またはインライン定数があなたの静的プロパティの\フィールドに割り当てているようにする必要があります。許可文字だけのための正規表現以下

関連する問題