Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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 编辑控制器方法的远程验证限制_Asp.net_Asp.net Mvc 4_Razor_Remote Validation - Fatal编程技术网

Asp.net 编辑控制器方法的远程验证限制

Asp.net 编辑控制器方法的远程验证限制,asp.net,asp.net-mvc-4,razor,remote-validation,Asp.net,Asp.net Mvc 4,Razor,Remote Validation,我有一个注册模型 我的模范班 public class RegisterViewModel { [Required] [StringLength(100, ErrorMessage = "Please enter a minimum of {2} characters", MinimumLength = 6)] [DisplayName("University ID")] [Remote("doesusernameExist", "HEC",null, Err

我有一个注册模型

我的模范班

public class RegisterViewModel
{


    [Required]
    [StringLength(100, ErrorMessage = "Please enter a minimum of {2} characters", MinimumLength = 6)]
    [DisplayName("University ID")]
    [Remote("doesusernameExist", "HEC",null, ErrorMessage = "usr name is allready exist", HttpMethod = "POST")]
    public string usrname { get; set; }    }
我的json控制器类

 [HttpPost]
    public JsonResult doesusernameExist(string usrname)
    {

         var institute = db.Institutes.Find(HEI_ID);
                   return Json(institute == null);


    }

对于创建新用户和编辑用户,我使用上述模型。因此,在不创建另一个模型的情况下,我想先在编辑视图中禁用编辑方法中的doesusernameExist调用方法禁用用户名的客户端验证:

@Html.TextBoxFor(m => m.username, new { @data_val = "false" })
编辑后期操作中的第二步从
ModelState
删除
username
的验证结果:

public ActionResult EditUser([Bind(Exclude = "usrname")]RegisterViewModel model)
{
    ModelState.Remove("username");
    if (ModelState.IsValid)
    {
    .
    .
    .

首先在编辑视图中禁用
用户名的客户端验证

@Html.TextBoxFor(m => m.username, new { @data_val = "false" })
编辑后期操作中的第二步从
ModelState
删除
username
的验证结果:

public ActionResult EditUser([Bind(Exclude = "usrname")]RegisterViewModel model)
{
    ModelState.Remove("username");
    if (ModelState.IsValid)
    {
    .
    .
    .

首先在编辑视图中禁用
用户名的客户端验证

@Html.TextBoxFor(m => m.username, new { @data_val = "false" })
编辑后期操作中的第二步从
ModelState
删除
username
的验证结果:

public ActionResult EditUser([Bind(Exclude = "usrname")]RegisterViewModel model)
{
    ModelState.Remove("username");
    if (ModelState.IsValid)
    {
    .
    .
    .

首先在编辑视图中禁用
用户名的客户端验证

@Html.TextBoxFor(m => m.username, new { @data_val = "false" })
编辑后期操作中的第二步从
ModelState
删除
username
的验证结果:

public ActionResult EditUser([Bind(Exclude = "usrname")]RegisterViewModel model)
{
    ModelState.Remove("username");
    if (ModelState.IsValid)
    {
    .
    .
    .

首先在视图中添加一个隐藏字段,如下所示:

@Html.hidden("PreviousUsername", Model.usrname)
在.cs类中添加以下内容:

[Remote("doesusernameExist", "HEC", ErrorMessage = "usr name is allready exist", AdditionalFields = "PreviousUsername")]
public string usrname { get; set; }
控制器的操作方法应如下所示:

public JsonResult doesusernameExist(string usrname, string PreviousUsername)
{

     if(usrname==PreviousUsername)
     {
       return true;
     }
     var institute = db.Institutes.Find(HEI_ID);
     return Json(false, JsonAlloBehaviour.AllowGet);

}

首先在视图中添加一个隐藏字段,如下所示:

@Html.hidden("PreviousUsername", Model.usrname)
在.cs类中添加以下内容:

[Remote("doesusernameExist", "HEC", ErrorMessage = "usr name is allready exist", AdditionalFields = "PreviousUsername")]
public string usrname { get; set; }
控制器的操作方法应如下所示:

public JsonResult doesusernameExist(string usrname, string PreviousUsername)
{

     if(usrname==PreviousUsername)
     {
       return true;
     }
     var institute = db.Institutes.Find(HEI_ID);
     return Json(false, JsonAlloBehaviour.AllowGet);

}

首先在视图中添加一个隐藏字段,如下所示:

@Html.hidden("PreviousUsername", Model.usrname)
在.cs类中添加以下内容:

[Remote("doesusernameExist", "HEC", ErrorMessage = "usr name is allready exist", AdditionalFields = "PreviousUsername")]
public string usrname { get; set; }
控制器的操作方法应如下所示:

public JsonResult doesusernameExist(string usrname, string PreviousUsername)
{

     if(usrname==PreviousUsername)
     {
       return true;
     }
     var institute = db.Institutes.Find(HEI_ID);
     return Json(false, JsonAlloBehaviour.AllowGet);

}

首先在视图中添加一个隐藏字段,如下所示:

@Html.hidden("PreviousUsername", Model.usrname)
在.cs类中添加以下内容:

[Remote("doesusernameExist", "HEC", ErrorMessage = "usr name is allready exist", AdditionalFields = "PreviousUsername")]
public string usrname { get; set; }
控制器的操作方法应如下所示:

public JsonResult doesusernameExist(string usrname, string PreviousUsername)
{

     if(usrname==PreviousUsername)
     {
       return true;
     }
     var institute = db.Institutes.Find(HEI_ID);
     return Json(false, JsonAlloBehaviour.AllowGet);

}


您需要2个视图模型(最佳解决方案),或者需要使用
RemoteAttribute
AdditionalFields
属性将附加值传递给
doesusernameExist()
方法(比如ID属性),以便您可以使用该属性有条件地测试是否需要执行数据库检查(即,如果ID为null或为零,则它是一个新对象,因此
返回Json(true);
或任何您想要应用的逻辑)您要么需要2个视图模型(最佳解决方案),要么需要向
doesusernameExist()
方法传递一个附加值(比如ID属性)使用
RemoteAttribute
AdditionalFields
属性,以便您可以使用该属性有条件地测试是否需要执行数据库检查(即,如果ID为null或为零,则它是一个新对象,因此
返回Json(true);
或任何您想要应用的逻辑),您需要2个视图模型(最佳解决方案),或者您需要使用
RemoteAttribute
AdditionalFields
属性将附加值传递给
doesusernameExist()
方法(比如ID属性),以便您可以使用该属性有条件地测试是否需要执行数据库检查(即,如果ID为null或为零,则它是一个新对象,因此
返回Json(true);
或任何您想要应用的逻辑)您要么需要2个视图模型(最佳解决方案),要么需要向
doesusernameExist()
方法传递一个附加值(比如ID属性)使用
RemoteAttribute
AdditionalFields
属性,以便您可以使用该属性有条件地测试是否需要执行数据库检查(即,如果ID为null或为零,则它是一个新对象,因此
返回Json(true);
或任何您想要应用的逻辑),这将删除所有验证,包括
[必需]
[StringLength]
validation!当然它会删除所有验证,但在
Edit User Action
中不需要检查用户名,因为用户名已经存在,用户无法更改其用户名。很明显,不是吗?您已经显示了一个文本框,用户可以对其进行编辑。因此,用户清除文本框的内容或将其编辑到100多个字符字符或将其编辑为与某些其他用户的用户名相同,所有这些用户名都无效,但不会被提取。如果仔细查看答案,可以解决此问题。这将删除所有验证,包括
[必需的]
[字符串长度]
validation!当然它会删除所有验证,但在
Edit User Action
中不需要检查用户名,因为用户名已经存在,用户无法更改其用户名。很明显,不是吗?您已经显示了一个文本框,用户可以对其进行编辑。因此,用户清除文本框的内容或将其编辑到100多个字符字符或将其编辑为与某些其他用户的用户名相同,所有这些用户名都无效,但不会被提取。如果仔细查看答案,可以解决此问题。这将删除所有验证,包括
[必需的]
[字符串长度]
validation!当然它会删除所有验证,但在
Edit User Action
中不需要检查用户名,因为用户名已经存在,用户无法更改其用户名。很明显,不是吗?您已经显示了一个文本框,用户可以对其进行编辑。因此,用户清除文本框的内容或将其编辑到100多个字符字符或将其编辑为与某些其他用户的用户名相同,所有这些用户名都无效,但不会被提取。如果仔细查看答案,可以解决此问题。这将删除所有验证,包括
[必需的]
[字符串长度]
validation!当然它会删除所有验证,但在
Edit User Action
中不需要检查用户名,因为用户名已经存在,用户无法更改其用户名。很明显,不是吗?您已经显示了一个文本框,用户可以对其进行编辑。因此,用户清除文本框的内容或将其编辑到100多个字符字符或将其编辑为与其他用户的用户名相同,所有这些都是无效的,但不会被提取