2015-05-04 2 views
2

Должен ли я показывать ошибку, полученную из результата json после элемента? i.eMessage - «Электронная почта уже существует» должна быть добавлена ​​после элемента - User_Email с сообщением об ошибке css class.как отобразить ошибку, возвращенную 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 Validation

$("#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

Где находится элемент управления с идентификатором ID, который вы пишете в своем коде JQuery? И почему вы пытаетесь написать null в вашем другом состоянии? –

+0

У вас есть свойство 'ValidationMessageFor()', поэтому почему вы не просто используете атрибут '[Remote]' в свойстве 'User_Email', и все это работает без необходимости в вашем скрипте. –

+0

@ StephenMuecke Большое спасибо. Я ищу решение таким образом. –

ответ

0

В вашей проверки Jquery, вы работаете на HTML тега с идентификатором «тзд ». Какую функцию вы вызываете, например. show(), hide(), html(), он вызывается в html-объекте с идентификатором «msg».

$("#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; 
}); 

Либо переместить элемент с идентификатором «MSG» в нужном место или то, что вы можете сделать, это просто создать новый элемент в вашем HTML (например, дела) после адреса текстового поля, или где на странице, на которой вы хотите показать сообщение, и дайте ему некоторый идентификатор, скажите «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); 
Смежные вопросы