远程数据注释无法正常工作ASP.NET mvc 4

时间:2013-06-16 19:59:45

标签: asp.net jquery asp.net-mvc-4 jquery-plugins data-annotations

使用[Remote]属性时出现严重问题。所以这是我的代码:

我已经包含了远程验证所需的所有Jquery库:

<head>
        <meta charset="utf-8" />
        <title>@ViewBag.Title - My ASP.NET MVC Application</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
        @Scripts.Render("~/bundles/jquery")
        <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.js" type="text/javascript"></script>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js" type="text/javascript"></script>
        @RenderSection("scripts", required: false)
    </head>

此外,我的域类中的代码称为Agence:

public class Agence
    {   
        #region Properties

        [Key]
        [Column("num_siret")]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Display(Name = "Numéro Siret")]
        [Remote("ValidateNumSiretNumberDigits", "RemoteValidation")]
        public long NumSiret { get; set; }
        . . . . . . . 
}

这是我的Controller RemoteValidation:

[AllowAnonymous]
    public class RemoteValidationController : Controller
    {
        //
        // GET: /Admin/RemoteValidation/

        public ActionResult ValidateNumSiretNumberDigits(long numSiret)
        {
            string s = numSiret.ToString();
            for (int i = 0; i < s.Length; i++)
            {
                if (s.Equals('0'))
                    s.Remove(i);
                else
                {
                    break;
                }
            }
            return Json(s.Count()==15, JsonRequestBehavior.AllowGet);
        }

    }

问题是验证不起作用,当我按下验证时,没有任何反应!即使我在JSon的return参数中将验证始终设置为true也没有任何反应。我还应该告诉你,验证是从管理区域上的创建页面调用的。我怀疑问题是我所包含的JQuery插件,因为我真的没有使用JQuery。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要jquery.validate.js插件以及jquery.validate.unobtrusive.js脚本才能使MVC客户端验证工作。

如果你已经创建了一个标准的MVC4,那么已经预先配置了这些脚本的包:"~/bundles/jqueryval"

所以你只需删除两个http://ajax.aspnetcdn.com...行(无论如何包含debug和min版本都没有意义)并用以下Scripts.Render调用替换它:

@Scripts.Render("~/bundles/jqueryval")