gpt4 book ai didi

validation - MVC3 客户端验证不起作用

转载 作者:行者123 更新时间:2023-12-04 14:51:40 25 4
gpt4 key购买 nike

我的模型上有一个必需的注释:

[Required(ErrorMessage = "Please choose an option")]
public bool? AnyDebts { get; set; }

我在 web.config 中启用了客户端验证:
   <appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

我在布局中引用了 jquery 脚本:
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.6.custom.min.js")" type="text/javascript"></script>

我还需要做什么才能使客户端验证工作?
服务器端验证仍在工作。

编辑:

啊哈!

我发现客户端验证正在工作。

但是,具体来说,我发现模型属性没有被验证客户端是那些用自定义属性注释的。
例如:
[BooleanRequiredToBeTrue(ErrorMessage = "You must agree to the statements listed")]
public bool StatementAgree { get; set; }

属性代码:
public class BooleanRequiredToBeTrueAttribute: RequiredAttribute
{
public override bool IsValid(object value)
{
return value != null && (bool)value;
}
}

这些不再是经过验证的客户端了吗?

最佳答案

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

是客户端验证工作所需的唯一脚本。

和往常一样,这里有一个完整的工作演示:

模型:
public class MyViewModel
{
[Required(ErrorMessage = "Please choose an option")]
public bool? AnyDebts { get; set; }
}

Controller :
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}

[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}

看法:
@model AppName.Models.MyViewModel
@{
ViewBag.Title = "Home Page";
}
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
<div>Debts</div>
<span>Yes</span> @Html.RadioButtonFor(x => x.AnyDebts, true)
<span>No</span> @Html.RadioButtonFor(x => x.AnyDebts, false)

@Html.ValidationMessageFor(x => x.AnyDebts)
<input type="submit" value="OK" />
}

备注:我没有包含 jquery-1.4.4.js在我看来,因为它已经在布局中引用了。

关于validation - MVC3 客户端验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4803108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com