2017-12-21 8 views
0

MVCの正規表現パターンをtextareaに追加すると機能しません。MVC5パターン正規表現の検証がテキストエリアで機能していません

@Html.TextAreaFor(model => model.MyEntity.Item, new { @required = "required", @class = "form-control english_only", @placeholder = "Item", @maxlength = "120", @Pattern = @"[^A-Za-z0-9]" }) 

私のモデルのコード:

[StringLength(150)] 
public string Item{ get; set; } 
+3

なぜあなたはHTML-5検証属性を使用していますか( 'jquery.validate.js 'と' jquery.validate.unobtrusive.js'を使用して)MVC組み込み検証の代わりに? –

+2

'jQuery'には経験は必要ありません。ビューやレイアウトに2つのスクリプトを追加し、検証属性を追加するだけです。 HTML-5の検証はクライアント側のみであり、サーバー側の検証を行うためにコードを書く必要があります。そしてあなたの意味は何ですか?MVCのパターンは何ですか?それはまさにあなたがしていないことです。 –

+1

[Validationの追加](https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction)をお読みください。/added-validation) –

答えて

0

これは、まさにこの問題を持っている人以外のためである私は上のボタンをクリックして送信すると、間違った値がデータベースに

マイビューのコードを追加しています。 .. デベロッパーに基づくコメント: HTML5 <textarea>要素はパターン属性をサポートしていません

したがって、solutio nは(jquery.validate.js付き)検証に建てMVCであるとjquery.validate.unobtrusive.js

だから、この問題があることを私のモデルを変更することで解決:

[StringLength(150)] 
    [RegularExpression("^[0-9]*$", ErrorMessage = "UPRN must be numeric")] 
     public string Item{ get; set; } 

とも私のビューまたは部分図でjquery.validate.js

が含まれます

鉱石は単にテキストエリアの代わりにテキストボックスに私のhtmlヘルパーを変更します:

@Html.EditorFor(model => model.Item, new { htmlAttributes = new { @class = "form-control english_only", @placeholder = "Only english text", @required = "required", @Pattern = @"^[[email protected]$!%*?&#^-_. +]+$", @title = "please insert english text only", @autocomplete= "off", @maxlength = "120" } }) 
+0

使用しているMVCの組み込み検証)を追加してから、new {required = "required"、Pattern = @ "^ [a-zA-Z0-9 $ @ $!%*?&#^ -_。+] + $"、maxlength = "120 "}'は無意味です。これらの属性は無視されるからです –

関連する問題