Если вы можете обновить решение до MVC 3, решение будет тривиальным. Просто реализуйте проверку слова в контроллере, а затем примените RemoteAttribute
к свойству, которое должно проверяться на наличие плохих слов. Вы получите ненавязчивую проверку ajax и проверку на стороне сервера только одним методом и одним атрибутом. Пример:
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;
}
}