jQuery Mobile/MVC: Получение изменения URL браузера с помощью RedirectToAction

Мой первый пост...

Когда я использую RedirectToAction, url в браузере не меняется. Как я могу этого добиться?

Я перехожу на ASP.NET MVC 3.0 (также использую jQuery Mobile) после 10+ лет использования веб-форм. Я уже около 8 недель в этом, и после нескольких книг и поиска ответа в Google, я не могу найти ответ.

У меня есть один маршрут, определенный в Global.asax:

routes.MapRoute(
"Routes",
"{controller}/{action}/{id}",
new { controller = "Shopping", action = "Index", id = UrlParameter.Optional }

У меня есть ShoppingController с такими действиями:

public ActionResult Cart() {...}

public ActionResult Products(string externalId) {...}

[HttpPost]
public ActionResult Products(List<ProductModel> productModels)
{
    // do stuff
    return RedirectToAction("Cart");
}

url, когда я делаю get и post (причем post имеет RedirectToAction) всегда:

/Shopping/Products?ExternalId=GenAdmin

После post и RedirectToAction я хочу, чтобы url в браузере изменился на:

/Shopping/Cart

Я пробовал Redirect, и RedirectToRoute, но получаю те же результаты.

Любая помощь будет очень признательна.

[Update] Я обнаружил, что виновником здесь являются посты jQuery Mobile AJAX. Если я отключу AJAX в jQuery Mobile, все работает.

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
    // do not handle links via ajax by default
    $(document).bind("mobileinit", function () { $.mobile.ajaxEnabled = false; });
</script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.css" />

Порядок вышеуказанных скриптов важен. Мне пришлось сначала включить сценарий для jQuery, затем включить сценарий для отключения использования AJAX в jQuery Mobile, а затем включить сценарий для jQuery Mobile.

Я все еще хотел бы найти способ использовать AJAX и заставить url обновляться должным образом. Или, по крайней мере, иметь возможность вызвать сообщение "loading" jQuery Mobile (или создать свое собственное).

28
задан David Hoffman 28 October 2011 в 12:17
поделиться