2011-11-18 17 views
0

我有一個MVC 3應用程序,我在表單上有很多整數字段。他們都需要範圍驗證,但範圍存在於我的數據庫的表中。所以我想創建一個可重用的遠程驗證工具,它將查找最小值和最大值並將驗證返回到視圖。MVC 3使用數據庫查找的可重用遠程驗證

在我的驗證類:

 [Remote("CheckIntegerRange", "Validation", ErrorMessage = "Value outside of range")] 
    public object UW1_Web_Tension_SP { get; set; } 

    [Remote("CheckIntegerRange", "Validation", ErrorMessage = "Value outside of range")] 
    public object UW2_Web_Tension_SP { get; set; } 

    [Remote("CheckIntegerRange", "Validation", ErrorMessage = "Value outside of range")] 
    public object UW3_Web_Tension_SP { get; set; } 

在我ValidationController

我用的我想這樣做,看我的請求可能會澄清什麼,我期待什麼一些示例代碼更新此我試圖創建具有多個參數的函數,但我不認爲我可以 - 但我認爲這說明了什麼,我想更清楚地做:

 public class ValidationController : Controller 
    { 
     public JsonResult CheckIntegerRange(int integer, string EntityName, string AttributeName) 
     { 
      var result = false; 
      int MinInteger = 0; 
      int MaxInteger = 100; 

      //declare recipe entities 
      var context = new MadicoRecipeEntities(); 

      //set sql statements and get description, etc from attributes view 
      var esqlIntegerAttributeDetails = "SELECT VALUE c FROM MadicoRecipeEntities.v_AttributeIntegerRangeDetails AS c " + 
       "WHERE c.EntityName = '" + EntityName + "' AND c.Attribute = '" + AttributeName + "'"; 
      var queryAttributeDetails = context.CreateQuery<v_AttributeIntegerRangeDetails>(esqlIntegerAttributeDetails); 
      var RecipeAttributes = queryAttributeDetails.ToList(); 

      foreach (var AttributeDetails in RecipeAttributes) 
      { 
       MinInteger = AttributeDetails.Min; 
       MaxInteger = AttributeDetails.Max; 
      } 

      return Json(result, JsonRequestBehavior.AllowGet); 
     } 
    } 

我缶找到處理我的第一個障礙的asp.net論壇上的以下文章 - 將不同的命名屬性傳遞給同一個驗證器。然而,在這個例子中,名字是一般傳遞的 - 我需要有名字才能查詢表以獲取適用的最小和最大範圍。

http://forums.asp.net/t/1625928.aspx/3/10

任何人都可以點我在正確的方向?

謝謝!

回答

0

它被稱爲遠程驗證!這裏是一個例子: remote validation

+0

謝謝,但我見過這些例子。我正在尋找可以在多個領域重複使用的東西。我在表單中有50個字段,都需要相同的查找,但我不想寫50個json查詢。 – user988148

+1

使用相同的公共JSON驗證方法,但傳入類型。然後有一個專門的查找方法,在該類型上執行switch語句。查找方法將返回該類型所需的查詢。 –

+0

這將幫助您:http://stackoverflow.com/a/10264019/1557032具體來說,請參閱正在添加的REMOTE規則。 –