0

У меня та же проблема, что они были эти люди, The постбэк (AddModelError) появляются на главном экране без CSS, а не в модальном всплывающем окне, вот вопросы ...AddModelError внутри Modal

Twitter Bootstrap modal does not work properly when implementing in asp.net mvc

MVC 4: Return partial view inside of bootstrap modal upon failed validation

Я попытался выполнить те же действия, как там описано решение, но постбэк еще на главном экране (Index)

Я не вижу, что это неправильно, я задаюсь вопросом, что случилось с моим с ода.

спасибо.

_Registration PartialView

<div id="ModalForm"> 
<div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
    <h4 class="modal-title" id="myModalLabel-Update">Agregar Agencia</h4> 
</div> 

@using (@Html.BeginForm("Registration", "Agency", FormMethod.Post, new { @class = "form-horizontal", @id = "registrationSave" })) 
{ 
    <div class="modal-body">   
     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true) 
     <fieldset> 
      <div class="form-group-sm col-sm-6" style="padding-top:7px;"> 
       @Html.Label("Direccion de Correo Electronico") 
       <div class="input-group"> 
        <span class="input-group-addon"> 
         <i class="ace-icon fa fa-envelope"></i> 
        </span> 
        @Html.TextBoxFor(u => u.Email, new { @class = "form-control", @placeholder = "Correo Electronico" }) 
       </div> 
       @Html.ValidationMessageFor(u => u.Email) 
      </div> 

      <div class="form-group-sm col-sm-6"> 
       @Html.Label("Nombre de Agencia") 
       @Html.TextBoxFor(u => u.NameAgency, new { @class = "form-control", @placeholder = "Nombre de Agencia" }) 
       @Html.ValidationMessageFor(u => u.NameAgency) 
      </div> 

      <div class="form-group-sm col-sm-6" style="padding-top:7px;"> 
       @Html.Label("# de Contrato - Ejemplo: 5784") 
       @Html.TextBoxFor(u => u.NContract, new { @class = "form-control limited", @placeholder = "Numero Contrato", @maxlength = "4" }) 
       @Html.ValidationMessageFor(u => u.NContract) 
      </div> 

      <div class="form-group-sm col-sm-6" style="padding-top:7px;"> 
       @Html.Label("Telefono Contacto (999)-999-9999") 
       <div class="input-group"> 
        <span class="input-group-addon"> 
         <i class="ace-icon fa fa-phone"></i> 
        </span> 
        @Html.TextBoxFor(u => u.Telefono, new { @class = "form-control", @placeholder = "Telefono Contacto" }) 
       </div> 
       @Html.ValidationMessageFor(u => u.Telefono) 
      </div>    
     </fieldset> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn btn-sm btn-primary" id="postSave">Guardar</button> 
     <button type="button" class="btn btn-sm btn-defaultt" data-dismiss="modal">Cerrar</button> 
    </div> 
} 

Index.cshtml

@{ 
ViewBag.Title = "Agencias"; 
} 

<div id="agencyList"> 
    @{Html.RenderAction("RenderList", "Agency");} 
</div> 

<!--Modal Charge--> 
<div class="modal fade" id="Modal-Charge" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="msgError"></div> 
     <div class="modal-content" id="ModalContent"> 

     </div> 
    </div> 
</div> 

<!-- inline scripts related to this page --> 
<script type="text/javascript"> 
    jQuery(function ($) { 
     $('a.newRegister').click(function (e) { 
      e.preventDefault(); 
      var url = '@Url.Action("Registration", "Agency")'; 
      GetModal(url); 
     }); 

     function GetModal(url) { 
      var form = $("#Modal-Charge form"); 
      $('#ModalContent').load(url, function (html) { 
       $("#Modal-Charge").modal('show'); 
      }); 
     } 

     $('#postSave').click(function (e) { 
      e.preventDefault() 
      $.ajax({ 
       url: '@Url.Action("Registration","Agency")', 
       type: 'POST', 
       dataType: 'html', 
       data: $('#registrationSave').serialize(), 
       success: function (result) { 
        if (result.success) { 
         $('#Model-Charge').modal('hide'); 
        } 
        else { 
         $('#ModalContent').html(result); 
        } 
       } 
      }); 
     });  


     $("a.newRegister, a.editAgency, a.deleteAgency").tooltip({ 
      show: { 
       effect: "slideDown", 
       delay: 250 
      } 
     }); 
    }) 
</script> 

Контроллер

public ActionResult Registration() 
    { 
     ViewBag.CountryID = new SelectList(db.Country, "CountryID", "CountryDesc", "Seleccione un País"); 
     ViewBag.StateID = new SelectList(db.State, "StateID", "StateDesc"); 

     return PartialView("_Registration"); 
    } 

    [HttpPost] 
    public ActionResult Registration(CheckRegistration user) 
    { 
     ViewBag.CountryID = new SelectList(db.Country, "CountryID", "CountryDesc", user.CountryID); 
     ViewBag.StateID = new SelectList(db.State, "StateID", "StateDesc", user.StateID); 

     var checkEmail = db.SystemUser.AsNoTracking().Where(u => u.Email == user.Email.Trim()).FirstOrDefault(); 
     if (checkEmail != null) 
     { 
      ModelState.AddModelError("Email", "Correo Electronico ya se encuentra registrado, Verifique"); 
      return PartialView("_Registration", user); 
     } 
     else 
     { 
      return Json(new { success = true }); 
     }    
    } 
+0

Вы должны описать то, что ваша проблема в этом вопросе. Что вы ожидаете и что происходит на самом деле. –

+0

@StephenMuecke Позвольте мне отредактировать сообщение ... Postback (AddModelError) появится на главном экране, а не в модальном всплывающем окне –

+0

Некоторые из этого кода не имеют смысла. Функция ajax задает 'dataType: 'html',' но ваш метод возвращает либо 'html', либо' json' (и если вы нажмете на 'return Json (new {success = true});' строка кода - исключение будет непонятно, почему вам нужно представление - почему бы просто не вернуть сообщение об ошибке, например: return Json (new {success = false, message = "....."}); ", а затем обновить некоторый элемент в в диалоговом окне, чтобы отобразить ошибку? –

ответ

0

Я следую за решение предоставить Stephen Muecke о Remote проверки

Модели

[Required] 
[DataType(DataType.EmailAddress)] 
[Remote("isEmail_Available", "Agency")] 
[StringLength(150)] 
[Display(Name = "Correo Electronico")] 
public string Email { get; set; } 

Контроллер

Смежные вопросы