2015-05-04 65 views
2

我应该显示从元素后得到json结果的错误吗?即:消息 - “电子邮件已存在”必须添加到具有错误消息css类的元素 - User_Email后面。如何显示由JSON返回的错误元素后

目前,我正在将其显示在表单顶部。

控制器操作结果

在这里,我返回JSON。

ObjectParameter objIErrorCode = new ObjectParameter("ErrorCode", typeof(Int32)); 
ObjectParameter objBFlag = new ObjectParameter("bFlg", typeof(bool)); 
objConnection.Check_User_Exists(User_Email, objBFlag, objIErrorCode); 

if (Convert.ToBoolean(objBFlag.Value) != true) 
{       
    return Json(new { Success = false, Message = "Email already exists" }, JsonRequestBehavior.AllowGet); 
} 
else 
{ 
    return Json(new { Success = true, Message = "Email not exists" }, JsonRequestBehavior.AllowGet); 
} 

jQuery验证

$("#User_Email").blur(function() { 

    if ($(this).val() != "") { 
     $.ajax({ 
      url: "/User/VerifyUserEmail?User_Email=" + $("#User_Email").val(), 

      success: function (result) { 
       var success = result.Success; 
       var message = result.Message; 

       if (success) { 
        var errorMsg = message;       
        $('#msg').html(errorMsg); 
        $('#msg').show(); 
       } 
       else { 
        var errorMsg = null; 
        $('#msg').html(errorMsg); 
        $('#msg').hide(); 
       } 
      } 
     }); 
    } 
    return false; 
}); 

查看

<div class="form-group"> 
    @Html.LabelFor(model => model.User_Email, new { @class = "control-label col-lg-2" }) 
    <div class="col-lg-4"> 
     @Html.EditorFor(model => model.User_Email) 
     @Html.ValidationMessageFor(model => model.User_Email) 
    </div> 
</div> 
+0

在您的Jquery代码中写入的ID msg控件在哪里?你为什么试图在你的其他条件中写入null? –

+0

你有一个'ValidationMessageFor()'属性,那么为什么你不只是在'User_Email'属性上使用'[Remote]'属性,并且不需要你的脚本就可以完成这项工作。 –

+0

@StephenMuecke非常感谢。我正在寻找这样的解决方案。 –

回答

0

在你的jQuery验证,您在操作上与ID标签的HTML“MSG ”。无论您打给哪个功能,例如show(),hide(),html(),它在id为“msg”的html对象上被调用。

$("#User_Email").blur(function() { 

if ($(this).val() != "") { 
    $.ajax({ 
     url: "/User/VerifyUserEmail?User_Email=" + $("#User_Email").val(), 

     success: function (result) { 
      var success = result.Success; 
      var message = result.Message; 

      if (success) { 
       var errorMsg = message;       
       $('#msg').html(errorMsg); // <-------------------- over here 
       $('#msg').show(); // <-------------------- over here 
      } 
      else { 
       var errorMsg = null; 
       $('#msg').html(errorMsg); // <-------------------- over here 
       $('#msg').hide(); // <-------------------- over here 
      } 
     } 
    }); 
} 
return false; 
}); 

无论是id为“味精”移动元素到您想要的位置,或者你可以做什么在你的HTML被简单地创建一个新的元素(例如,一个div)的电子邮件地址文本框后,或其它地方在你想要显示消息的页面上,给它一些id,比如说“EmailMessageContainer”。

修改代码,如:

查看:

<div class="form-group"> 
    @Html.LabelFor(model => model.User_Email, new { @class = "control-label col-lg-2" }) 
<div class="col-lg-4"> 
    @Html.EditorFor(model => model.User_Email) 
    @Html.ValidationMessageFor(model => model.User_Email) 
    <div id="EmailMessageContainer"> //<----- This is the new element, could be a label or a label inside div or whatever you want with whichever class you want 
    </div> 
</div> 

和jQuery这样的:

$("#User_Email").blur(function() { 

if ($(this).val() != "") { 
    $.ajax({ 
     url: "/User/VerifyUserEmail?User_Email=" + $("#User_Email").val(), 

     success: function (result) { 
      var success = result.Success; 
      var message = result.Message; 

      if (success) { 
       var errorMsg = message;       
       $('#EmailMessageContainer').html(errorMsg); // <-------------------- over here 
       $('#EmailMessageContainer').show(); // <-------------------- over here 
      } 
      else { 
       var errorMsg = null; 
       $('#EmailMessageContainer').html(errorMsg); // <-------------------- over here 
       $('#EmailMessageContainer').hide(); // <-------------------- over here 
      } 
     } 
    }); 
} 
return false; 
}); 
0

我想你格或命名msg标签在上面。将此元素放置在此代码下面。

@Html.EditorFor(model => model.User_Email);