Pro*_*ofK 9 asp.net-mvc data-annotations asp.net-mvc-4 asp.net-mvc-viewmodel
我有一个DropDownLists的编辑器模板,标有这样的属性:
[AttributeUsage(AttributeTargets.Property)]
public class DropDownListAttribute : UIHintAttribute
{
public string SelectListName { get; set; }
public DropDownListAttribute(string selectListName)
: base("DropDownList", "MVC", selectListName)
{
SelectListName = selectListName;
}
}
Run Code Online (Sandbox Code Playgroud)
它本身看起来像这样:
@using Comair.RI.UI.Core
@{
var list = this.GetModelSelectList();
var listWithSelected = new SelectList(list.Items, list.DataValueField, list.DataTextField, Model);
}
@Html.DropDownListFor(m => Model, listWithSelected, " - select - ")
Run Code Online (Sandbox Code Playgroud)
我的问题是它只验证服务器端,这对于用户解决所有客户端验证非常烦人,只是提交并获得新的,意外的服务器端验证.
如果您的客户端验证不起作用,可能是由以下原因之一引起的:
您的 web.config 没有该输入:
<应用程序设置> <添加键=“ClientValidationEnabled”值=“true”/> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </应用程序设置>
您忘记添加验证脚本:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
您的控件没有被Html.BeginForm或包围Ajax.BeginForm
如果您使用以下命令,则更新到 ASP.NET MVC 4 后,客户端验证可能会停止在 EditorFor 中工作:
@Html.DropDownListFor(m => Model, listWithSelected, " - select - ")
Run Code Online (Sandbox Code Playgroud)
替换Model为m应该可以解决问题:
@Html.DropDownListFor(m => m, listWithSelected, " - select - ")
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |