使用[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。谢谢。
答案 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")