0

我在使用 [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; }
        . . . . . . . 
}

这是我的控制器 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 的返回参数中始终将验证设置为 true,也没有任何反应。我还应该告诉您,验证是从管理区域的创建页面调用的。我怀疑问题出在我包含的 JQuery 插件上,因为我真诚地没有使用 JQuery。谢谢你。

4

1 回答 1

2

您需要jquery.validate.js插件和jquery.validate.unobtrusive.js脚本来使 MVC 客户端验证工作。

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

所以你只需要删除这两http://ajax.aspnetcdn.com...行(无论如何包含调试和最小版本是没有意义的)并用以下Scripts.Render调用替换它:

@Scripts.Render("~/bundles/jqueryval")
于 2013-06-16T20:08:08.960 回答