2011-11-15 13 views
6

次のビューモデルがあります。先頭と末尾のスペースを無視するビューモデルの検証

public UserViewModel { 
... 
[Email(@"^[email protected][^\.].*\.[a-z]{2,}$", false, ErrorMessage="...")] 
public string EmailAddress{ get; set; } 
... 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Visitor(UserViewModel userViewModel) 
... 

私が発見したしかしその時々のユーザーがコピーおよびペースト別の電子メール、ワードの文書などからビューへの電子メールや、時にはそれが主要なおよび/または末尾のスペースをピックアップ。ユーザーが最もインテリジェントではなく、スペースが入力コントロールに表示されないので、実際にはこれらを無視して実行する必要があります。

だから私のモデル状態が無効である場合、私はthis-

  1. は私の検証式にスペースを追加し解決するために最善の方法を疑問に思って

  2. アクション結果メソッドで、電子メールをトリミングするかどうかをチェックし、エラーをモデルステートから手動で削除するかどうかをチェックします。
  3. 何かを行います...

私は1約100%を確認していない、また2はあまりにも正直です!

答えて

3

私は本当にあなたの検証式にスペースを追加しません。

この回答を見てください:ASP.NET MVC: Best way to trim strings after data entry. Should I create a custom model binder?

+0

理想的には、私はすべてのプロパティではなく、 "電子メール"プロパティでのみそれが欲しいですが、私はこれについて考える必要があると言いました! – Rippo

+0

私はこれについてもっと考えていれば、これはもっとうまくいくと私は確信しています。私は、私のウェブサイトに先行/後続のスペースを維持する必要がある1つの場所を持っていません.... – Rippo

2

あなたもプロパティに値を設定するときにトリムコードを持っているセッターを変更することができます。

+0

シンプルで簡単です!私もそれが好き! –

+0

私はしません。それは[POLS](http://en.wikipedia.org/wiki/Principle_of_least_astonishment)に違反します。なぜなら、あなたは一つのことを入れて別のものを得るからです。 –

関連する問題