9

我有一个 DropDownLists 的编辑器模板,它标有如下属性:

[AttributeUsage(AttributeTargets.Property)]
public class DropDownListAttribute : UIHintAttribute
{
    public string SelectListName { get; set; }
    public DropDownListAttribute(string selectListName)
        : base("DropDownList", "MVC", selectListName)
    {
        SelectListName = selectListName;
    }
}

它本身看起来像这样:

@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 - ")

我的问题是它只验证服务器端,这对于用户解决所有客户端验证非常烦人,只是提交并获得一个新的、令人惊讶的服务器端验证。

4

2 回答 2

1

如果您的客户端验证不起作用,则可能是由以下原因之一引起的:

  1. 您的 web.config 没有那个输入:

    <应用设置>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </app设置>
    
  2. 您忘记添加验证脚本:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
    
  3. Html.BeginForm您的控件没有被或包围Ajax.BeginForm

  4. 如果您使用以下方法,在更新到 ASP.NET MVC 4 后,客户端验证可能会在 EditorFor 中停止工作:

    @Html.DropDownListFor(m => Model, listWithSelected, " - select - ")
    

    替换Modelm应该可以解决问题:

    @Html.DropDownListFor(m => m, listWithSelected, " - select - ")
    
于 2013-01-17T18:14:50.327 回答
0

设置所需的类

@Html.DropDownListFor(m => Model, listWithSelected, " - select - ", new { @class='required' })

请参阅ASP MVC 3:如何在选择列表上进行客户端验证?

于 2013-01-18T11:15:32.140 回答