Как отфильтровать плохие слова из текстового поля в ASP.NET MVC? - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть требование, в котором я хочу отфильтровать значение текстового поля, то есть удалить неверные слова, введенные пользователем. Как только пользователь вводит плохие слова и нажимает кнопку «Отправить», действие вызывается. Где-то в модели (в любом месте) я смогу удалить плохие слова и снова привязать отфильтрованное значение к модели.

Как я могу это сделать?

1 Ответ

0 голосов
/ 01 сентября 2011

Если вы можете обновить решение до 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;
    }
}
...