asp.net-mvc - 如何使我的自定义DropDownList编辑器模板的Required属性在客户端运行?

标签 asp.net-mvc asp.net-mvc-4 data-annotations 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;
    }
}

它本身看起来像这样:
@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 - ")

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

最佳答案

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

  • 您的web.config没有该输入:
    <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    
  • You forgotten to add validation scripts:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
    
  • Your controls are not surrounded by Html.BeginForm or Ajax.BeginForm

  • Client-side validation can stop working in EditorFor after update to ASP.NET MVC 4 if you use:

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

    Model替换m应该可以解决问题:
    @Html.DropDownListFor(m => m, listWithSelected, " - select - ")
    
  • 关于asp.net-mvc - 如何使我的自定义DropDownList编辑器模板的Required属性在客户端运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14339445/

    相关文章:

    c# - 如何将文本框的值发送到字符串变量?

    asp.net-mvc-4 - 单击打开 Kendo UI 菜单栏

    asp.net-mvc - 是否可以在 IValidatableObject 方法中以强类型方式指定字段名称?

    c# - 每天在特定时间在 Web 服务上运行预定进程

    asp.net-mvc - ASP.NET MVC5/IIS Express 无法调试 - 代码未运行

    c# - 我在 C# Web API 项目中上传哪些文件?

    javascript - asp.net mvc4 Entity Framework 中的评级

    c# - 如何将对象传递给自定义数据注释验证器

    c# - 如何获取模型的 "description"属性而不是 "name"属性 - (MVC asp.net)

    asp.net - 在 MVC3 应用程序中创建单独的 DAL 项目