使用Jquery验证在MVC 3中选择List Focus on invalidate

使用Jquery验证在MVC 3中选择List Focus on invalidate,jquery,forms,asp.net-mvc-3,validation,Jquery,Forms,Asp.net Mvc 3,Validation,在我的MVC3应用程序上的invalidate表单中,焦点未设置在第一个选择列表上(如果选择列表数据为空/无效)。选择列表无效,但未设置焦点。如果输入类型为文本框、收音机等,则工作正常。我想知道少了什么 Cool...here comes the model and view... **Model** public class RegisterModel { [Remote("CheckDuplicateUserName","Account")] [D

在我的MVC3应用程序上的invalidate表单中,焦点未设置在第一个选择列表上(如果选择列表数据为空/无效)。选择列表无效,但未设置焦点。如果输入类型为文本框、收音机等,则工作正常。我想知道少了什么

Cool...here comes the model and view...
**Model**

 public class RegisterModel
    {
        [Remote("CheckDuplicateUserName","Account")]
        [Display(Name = "User name")]
        [Required(ErrorMessage = "This field is required.")]
        [StringLength(30)]
        public string UserName { get; set; }


        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email address")]
        [Remote("CheckDuplicateEmail", "Account")]
        [Required(ErrorMessage = "This field is required.")]
        public string Email { get; set; }


        [ValidatePasswordLength]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        [Required(ErrorMessage = "This field is required.")]
        [StringLength(30)]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        [StringLength(30)]
        public string ConfirmPassword { get; set; }


        //additional fields

        [Display(Name = "Name")]
        [Required(ErrorMessage = "This field is required.")]
        [StringLength(30)]
        public string Name { get; set; }

        [Display(Name = "Address")]
        [StringLength(100)]
        public string Address { get; set; }

        [Display(Name = "City")]
        [Required(ErrorMessage = "This field is required.")]
        public string City { get; set; }


    }

**View** 


@model MyShowCase.Models.RegisterModel
@{
    ViewBag.Title = "Register";
}

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

@using (Html.BeginForm("Register","Account"))
{
    @Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.")
    <div id="register">
       <div class="editor-label">
                @Html.LabelFor(m => m.UserName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.UserName) *
                @Html.ValidationMessageFor(m => m.UserName)
                  <span class="instruction"> username should be alphanumeric without any special characters.</span>

            </div>
            <div class="editor-label">
                @Html.LabelFor(m => m.Password)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(m => m.Password) *   @Html.ValidationMessageFor(m => m.Password)
                <span class="instruction"> Passwords are required to be a minimum of @ViewBag.PasswordLength characters in length.</span>


            </div>
            <div class="editor-label">
                @Html.LabelFor(m => m.ConfirmPassword)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(m => m.ConfirmPassword) *
                @Html.ValidationMessageFor(m => m.ConfirmPassword)
            </div>
            <div class="editor-label">
                @Html.LabelFor(m => m.Name)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.Name) *
                @Html.ValidationMessageFor(m => m.Name)
                  <span class="instruction"> Specify your Full Name here.</span>

            </div>

     <div class="editor-label">
                @Html.LabelFor(m => m.City)
            </div>
            <div class="editor-field">
                <select id="City" name="City">
                    <option value="" selected="selected"></option>
                    <option >Dubai</option>
                    <option >Abu Dhabi</option>

                </select>
                *
                @Html.ValidationMessageFor(m => m.City)
            </div>

    </div>
}

Here is all what i have, the problem is that focus is not set on "City" Dropdown if City is not selected. Its validated but the focus in not set....


web.config 
  <appSettings>
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />

    </appSettings>
Cool…模型和视图来了。。。
**模型**
公共类注册器模型
{
[远程(“检查重复用户名”、“帐户”)]
[显示(Name=“User Name”)]
[必需(ErrorMessage=“此字段是必需的。”)]
[行政长官(30)]
公共字符串用户名{get;set;}
[数据类型(数据类型.电子邮件地址)]
[显示(Name=“电子邮件地址”)]
[远程(“检查重复邮件”、“帐户”)]
[必需(ErrorMessage=“此字段是必需的。”)]
公共字符串电子邮件{get;set;}
[验证密码长度]
[数据类型(数据类型.密码)]
[显示(Name=“密码”)]
[必需(ErrorMessage=“此字段是必需的。”)]
[行政长官(30)]
公共字符串密码{get;set;}
[数据类型(数据类型.密码)]
[显示(Name=“确认密码”)]
[比较(“密码”,ErrorMessage=“密码和确认密码不匹配。”)]
[行政长官(30)]
公共字符串ConfirmPassword{get;set;}
//其他字段
[显示(Name=“Name”)]
[必需(ErrorMessage=“此字段是必需的。”)]
[行政长官(30)]
公共字符串名称{get;set;}
[显示(Name=“Address”)]
[长度(100)]
公共字符串地址{get;set;}
[显示(Name=“City”)]
[必需(ErrorMessage=“此字段是必需的。”)]
公共字符串City{get;set;}
}
**视图**
@模型MyShowCase.Models.RegisterModel
@{
ViewBag.Title=“寄存器”;
}
@使用(Html.BeginForm(“注册”、“帐户”))
{
@Html.ValidationSummary(true,“帐户创建未成功。请更正错误并重试。”)
@LabelFor(m=>m.UserName)
@Html.TextBoxFor(m=>m.UserName)*
@Html.ValidationMessageFor(m=>m.UserName)
用户名应为字母数字,无任何特殊字符。
@LabelFor(m=>m.Password)
@Html.PasswordFor(m=>m.Password)*@Html.ValidationMessageFor(m=>m.Password)
密码的长度要求至少为@ViewBag.PasswordLength个字符。
@LabelFor(m=>m.ConfirmPassword)
@Html.PasswordFor(m=>m.ConfirmPassword)*
@Html.ValidationMessageFor(m=>m.ConfirmPassword)
@LabelFor(m=>m.Name)
@Html.TextBoxFor(m=>m.Name)*
@Html.ValidationMessageFor(m=>m.Name)
请在此处指定您的全名。
@LabelFor(m=>m.City)
迪拜
阿布扎比
*
@Html.ValidationMessageFor(m=>m.City)
}
这里是我所有的,问题是,如果没有选择城市,焦点不会设置在“城市”下拉列表上。它已验证,但焦点未设置。。。。
web.config

缺少所需的类。将选择列表的样式设置为class='required',它就可以正常工作

如果您想将下拉列表集中在按钮上,请单击“验证”,然后只需在
CSS
文件中添加一个类即可

.form-control.input-validation-error {
border: 1px solid #b94a48;
}

它在我的代码中工作。试试看。

你们能给我们看一些代码吗?如果没有它,很难判断你的应用程序会在哪里崩溃。真正地这就是你的密码?jQuery和/或C#/VB在哪里?我已经写了“MVC3”,仅供参考,在MVC3中,您必须在标记中指定class=“required”,或者用required属性注释实体。其余部分由MVC3完成…所以,请再次向我们展示一些代码。单击帖子上的编辑按钮,粘贴一些代码,然后帮助我们帮助您。向我们展示您的模型、更多标记和控制器代码。