2014-02-15 5 views
0

У меня есть форма AJAX:Ajax формы изменения URL

@model Site.Models.ChangeModel 
@using (Ajax.BeginForm("ChangePassword", "Account", new AjaxOptions { HttpMethod = "POST", UpdateTargetId="result" }, new { @class = "form-horizontal", role = "form", id = "changePasswordForm" })) 
{ 
    <div id="result"></div> 
    @Html.AntiForgeryToken() 

    @Html.ValidationSummary(true, Base.ChangesNotSubmitted, new { @class = "alert alert-danger" }) 

    @Html.EditorFor(m => m.ChangePasswordModel.OldPassword) 

    @Html.EditorFor(m => m.ChangePasswordModel.Password) 

    @Html.EditorFor(m => m.ChangePasswordModel.ConfirmPassword) 

    <div class="form-group"> 
     <div class="col-sm-offset-6 col-sm-2"> 
      <button type="submit" class="btn btn-primary">@Base.ChangePassword</button> 
     </div> 
    </div> 
} 

С этим действием

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult ChangePassword(ChangePasswordModel model) 
    { 
     bool changed=false; 
     if (ModelState.IsValid) 
     { 
      var result = UserManager.ChangePassword(User.Identity.GetUserId(), model.OldPassword, model.Password); 
      if (result.Succeeded) 
      { 
       changed = true; 
      } 
     } 

     return Content("changed"); 

    } 

Форма находится в действии Index, и я не имею вида на Changepassword!

После подачи sform я получаю:

  • пустая страница с содержанием я послал
  • Url изменяется на .../ChangePassword длина = 7 (раньше это было/индекс)
  • ?

Я не знаю, откуда этот параметр длины.

Так что мой вопрос: как оставаться на одном и том же месте и получить результат в правильном div?

И кто-нибудь знает, откуда длина параметра, у меня уже есть эта проблема несколько раз с ней.

+0

Вы ссылаетесь на все необходимые сценарии? Наиболее распространенные проблемы, которые я видел с помощью Ajax.BeginForm() ', не ссылаются на все сценарии или не ссылаются на них в неправильном порядке. – HTX9

ответ

0

Вы должны использовать некоторые, как это:

return RedirectToAction("ViewName", [new { args } OR model]); 

ContentResult может использоваться для возврата к действию в виде текста. Этот класс наследуется от абстрактного класса ActionResult.

+0

, но ajax предположим, что остался на той же странице, почему это делает мне другую страницу, это странно :( – Alnedru

+0

Для примера у меня есть div, но после отправки он закрыт:/это правильное поведение? – Alnedru

+0

Да, потому что ваш ajax заменив форму: pdateTargetId = "result" – melvas

0

Пожалуйста, убедитесь, что вы включили файлы javascript ajax в заголовок.

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>> 
Смежные вопросы