2011-09-01 59 views
0

我有一個要求,我想過濾文本框的值,即應該刪除用戶輸入的壞詞。一旦用戶輸入不好的單詞並點擊提交按鈕,就會調用操作。在模型的某個地方(任何地方),我應該能夠刪除不好的單詞,並將過濾後的值重新綁定回模型。如何篩選ASP.NET MVC中文本框的錯誤字詞?

我該怎麼做?

+0

您是在尋找服務器還是僅在客戶端解決方案? –

回答

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; 
    } 
} 
+0

但我目前的項目是在MVC2中,我無法將其遷移到MVC3。有沒有其他方式可以過濾不好的單詞? – nimi

+0

爲什麼你不能遷移?還有其他的選擇,但是你必須實現它你自己...但它不應該很難。我在博客中介紹了ASP.NET MVC3中的自定義驗證,也許你可以將其中的一些用於MVC2:http://blog.tomasjansson.com/2011/08/creating-custom-unobtrusive-file-extension-validation-in -Asp淨MVC-3 - 和 - 的jquery / –