Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 仅当用户完成输入数据时调用远程操作方法_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 仅当用户完成输入数据时调用远程操作方法

Asp.net mvc 4 仅当用户完成输入数据时调用远程操作方法,asp.net-mvc-4,Asp.net Mvc 4,我一直在开发MVC4应用程序,使用远程数据注释检查数据库中是否已经存在用户名。但我的问题是,当我在TextBox中输入第一个字符时,它会调用JSON方法,对于每个字符插入,它都会调用JSON方法,但我看到的是,只有当用户在TextBox中完成用户名输入时,它才应该执行JSON 这是我的类,我在其中创建了带有远程DataAnnotation的对象 public class Student { [Display(Name = "User Name")] [Requir

我一直在开发MVC4应用程序,使用远程数据注释检查数据库中是否已经存在用户名。但我的问题是,当我在TextBox中输入第一个字符时,它会调用JSON方法,对于每个字符插入,它都会调用JSON方法,但我看到的是,只有当用户在TextBox中完成用户名输入时,它才应该执行JSON

这是我的类,我在其中创建了带有远程DataAnnotation的对象

public class Student
{
        [Display(Name = "User Name")]
        [Required(ErrorMessage = "Please enter {0}")]
        [StringLength(100)] //If i give minLength here as 3 then after entering 3 characters it is going to call JSON Method which i don't want so i removed minLength Attribute
        [Remote("IsAvailable", "Home", ErrorMessage = "{0} already in use!")]
        public string UserName { get; set; }
}
这是我在我的家庭控制器中检查用户名的JSON方法

public JsonResult IsAvailable(string UserName)
{
        bool blnResult = false;
        if (UserName != null)
        {
            blnResult = !objDBContext.Student.Any(X => X.UserName == UserName);
        }
        return Json(blnResult, JsonRequestBehavior.AllowGet);
}
<div class="form-group col-lg-4">
                    @Html.LabelFor(model => model.UserName, new { @class = "control-label" })
                    <div>
                        @Html.TextBoxFor(model => model.UserName, new { @class = "form-control", maxlength = "100" })
                        @Html.ValidationMessageFor(model => model.UserName, "*")
                    </div>
                </div>
我的视图很容易输入用户名

public JsonResult IsAvailable(string UserName)
{
        bool blnResult = false;
        if (UserName != null)
        {
            blnResult = !objDBContext.Student.Any(X => X.UserName == UserName);
        }
        return Json(blnResult, JsonRequestBehavior.AllowGet);
}
<div class="form-group col-lg-4">
                    @Html.LabelFor(model => model.UserName, new { @class = "control-label" })
                    <div>
                        @Html.TextBoxFor(model => model.UserName, new { @class = "form-control", maxlength = "100" })
                        @Html.ValidationMessageFor(model => model.UserName, "*")
                    </div>
                </div>

@LabelFor(model=>model.UserName,新的{@class=“control label”})
@Html.TextBoxFor(model=>model.UserName,新的{@class=“form control”,maxlength=“100”})
@Html.ValidationMessageFor(model=>model.UserName,“*”)

提前感谢大家的宝贵反馈

请显示视图,JS associatedView很简单,没有什么。我将在上面发布,我没有为远程验证编写任何专用的JS但请注意,您声明的不是默认行为。只有在(1)您进行更改并签出(此时触发验证(
onblur
)和(2)时,它才会在keyup上验证然后,您的选项卡返回并开始进行更改。在完成用户输入后,没有其他方法调用远程验证,而不是编写一个Keyup函数以避免每次调用???@Aslam..而不是编辑,最欢迎有价值的建议