MVC 4 RedirectToAction генерирует неверный URL-адрес

У меня проблема с RedirectToAction. У меня есть следующий простой класс контроллера. Метод Index отображает список групп. Create создает новую группу и добавляет ее в базу данных. Это отлично работает и отображается в списке, когда он перенаправляется обратно на Index. Проблема в том, что URL-адрес после отображения Index по-прежнему использует URL-адрес из Create: /Group/Create. Я думаю, что на самом деле он правильно перенаправляется на Index, а затем сразу же мигает на действие Create, потому что он показывает правильный контент для Index. Любая идея, что может вызвать это? У меня нет определенных пользовательских маршрутов, поэтому я уверен, что это не проблема маршрутизации. Я подозреваю, что это проблема AJAX.

public class GroupController : Controller
{
    private ModelDb db = new ModelDb();

    [Authorize(Roles = "Administrator")]
    public ActionResult Index()
    {
        return View();
    }

    [Authorize(Roles = "Administrator")]
    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    [Authorize(Roles = "Administrator")]
    public ActionResult Create(Group group)
    {
        if (ModelState.IsValid)
        {
            db.Groups.Add(group);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(group);
    }
}

person Psyfun    schedule 09.02.2015    source источник
comment
Я подозреваю, что это проблема AJAX.? Какой у вас код ajax?   -  person    schedule 10.02.2015
comment
Я использую JQuery Mobile.   -  person Psyfun    schedule 10.02.2015
comment
Вы упомянули AJAX. Вы публикуете с помощью AJAX?   -  person    schedule 10.02.2015


Ответы (1)


Оказывается, это была проблема AJAX, созданная JQuery Mobile. Я должен был провести больше тестов, прежде чем публиковать вопрос, но, возможно, это поможет кому-то еще. Я отключил публикацию данных с помощью AJAX, и проблема исчезла. Теперь мне нужно обновить кучу форм, чтобы отключить его везде.

Итак, теперь я использую следующий код, чтобы начать форму:

@using (Html.BeginForm("Create", "Group", FormMethod.Post, new { data_ajax = "false" }))
person Psyfun    schedule 09.02.2015