Остановить обновление страницы после получения сообщения об успешном завершении работы сервера от контроллера - PullRequest
0 голосов
/ 10 декабря 2010

Код ниже готов для тестирования: MVC3

Проблема в том, что я включаю e.preventDefault ();чем отдельные ошибки, которые не отображаются перед каждым элементом управления, сгенерированным ValidationMessageFor, и отображаются при e.preventDefault ();включен.Все ошибки работают правильно, но после обработки кода и успешного возврата сообщения со стороны сервера вся страница становится POSTBACK / REFRESH :(.

Вопрос: Как мне остановить всю страницуиз Refresh / Postback, если e.preventDefault (); включен и получает сообщение SUCCESS от сервера?

<script type="text/javascript">
  $(function () {
      $("#personCreate").click(function (e) {
          //e.preventDefault(); -------> Here is the problem

          var profile = {
                 FirstName: $("#FirstName").val(),
                 LastName: $("#LastName").val()
             };


          $.ajax({
              url: '/Test/save',
              type: 'POST',
              dataType: 'json',
              data: JSON.stringify(profile),
              contentType: 'application/json; charset=utf-8',

              //beforeSend: function () { $("#saveStatus").html("Saving").show(); },
              //complete: function () { $("#saveStatus").html("Saving").hide(); },
              success: function (data) {
                  // get the result and do some magic with it
                  var message = data.Message;
                  $("#resultMessage").html(message);
              }
          });
      });
  });

</script>

// Код контроллера

[HttpPost]
public ActionResult Save(CreateViewModel userVm)
{
    if (ModelState.IsValid)
    {
        return Json(new CreateViewModel { Message = "Passed" });
    }
    else
    {
        return Json(new CreateViewModel { Message = "Failed" });
    }
}

// Create.cshtml

<span id="saveStatus"></span>

@using(Html.BeginForm())
{


        <fieldset>
        <legend>Contact Information</legend>
        <div>
            <table class="form-spacing">                        
                <tr>
                    <td class="cell-one">* @Html.LabelFor(model => model.FirstName) :</td>
                    <td class="cell-two">@Html.TextBoxFor(model => model.FirstName, new { @class = "big-field", tabindex = "1" })</td>
                    <td class="cell-three" >@Html.ValidationMessageFor(model => model.FirstName)</td>           
                </tr>
                <tr>
                    <td class="cell-one">* @Html.LabelFor(model => model.LastName) :</td>
                    <td class="cell-two">@Html.TextBoxFor(model => model.LastName, new { @class = "big-field", tabindex = "2" })</td>
                    <td class="cell-three" >@Html.ValidationMessageFor(model => model.LastName)</td>            
                </tr>
            </table>
         </div>
    </fieldset>

     <p>
        <input type="submit" value="Save" id="personCreate" />
    </p>

}

    <div>
        <span id="resultMessage"></span>
    </div>

1 Ответ

0 голосов
/ 10 декабря 2010

Пожалуйста, обратитесь это

http://iridescence.no/post/ASPNET-MVC-ActionResult-for-Rendering-JSON-using-JSONNET.aspx.

В вашем контроллере вы возвращаете ActionResult

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...