テキストボックスの値をフィルタリングするという要件があります。つまり、ユーザーが入力した不適切な単語を削除する必要があります。ユーザーが不適切な言葉を入力して送信ボタンをクリックすると、アクションが呼び出されます。モデルのどこか(任意の場所)で、不適切な単語を削除し、フィルタリングされた値をモデルに再バインドできるはずです。
これどうやってするの?
テキストボックスの値をフィルタリングするという要件があります。つまり、ユーザーが入力した不適切な単語を削除する必要があります。ユーザーが不適切な言葉を入力して送信ボタンをクリックすると、アクションが呼び出されます。モデルのどこか(任意の場所)で、不適切な単語を削除し、フィルタリングされた値をモデルに再バインドできるはずです。
これどうやってするの?
ソリューションを MVC 3 に更新できる場合、ソリューションは簡単です。コントローラーに単語チェックを実装してから、RemoteAttribute悪い単語に対して検証する必要があるプロパティに を適用するだけです。目立たない ajax チェックとサーバー側チェックを 1 つのメソッドと 1 つの属性だけで取得できます。例:
public class YourModel
{
[Remote("BadWords", "Validation")]
public string Content { get; set; }
}
public class ValidationController
{
public JsonResult BadWords(string content)
{
var badWords = new[] { "java", "oracle", "webforms" };
if (CheckText(content, badWords))
{
return Json("Sorry, you can't use java, oracle or webforms!", JsonRequestBehavior.AllowGet);
}
return Json(true, JsonRequestBehavior.AllowGet);
}
private bool CheckText(string content, string[] badWords)
{
foreach (var badWord in badWords)
{
var regex = new Regex("(^|[\\?\\.,\\s])" + badWord + "([\\?\\.,\\s]|$)");
if (regex.IsMatch(content)) return true;
}
return false;
}
}