0

我有一个要求,我想过滤文本框值,即应该删除用户输入的坏词。一旦用户输入坏词并单击提交按钮,就会调用操作。在模型中的某个地方(任何地方)我应该能够删除坏词并将过滤后的值重新绑定回模型。

我怎样才能做到这一点?

4

1 回答 1

0

如果您可以将解决方案更新到 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;
    }
}
于 2011-09-01T06:39:23.713 回答