使用DB Lookup进行MVC 3可重用远程验证

时间:2011-11-18 16:59:56

标签: asp.net-mvc validation reusability

我有一个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

有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

它被称为远程验证!这是一个例子: remote validation

相关问题