Мой первый пост...
Когда я использую 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 (с сообщением, имеющим RedirectToAction), всегда:
/Shopping/Products?ExternalId=GenAdmin
После сообщения и RedirectToAction я хочу, чтобы URL-адрес браузера изменился на:
/Shopping/Cart
Я пробовал Redirect и RedirectToRoute, но получал те же результаты.
Любая помощь будет принята с благодарностью.
[Обновление] Я нашел, что jQuery Mobile AJAX сообщения являются виновниками здесь. Если я отключу jQuery Mobile AJAX, он будет работать.
<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="#" onclick="location.href='http://code.jquery.com/mobile/1.0rc2/jquery.mobile-1.0rc2.min.css'; return false;" />
Приоритет приведенных выше сценариев важен. Сначала я должен был включить script в jQuery, затем включить script, чтобы отключить использование JQuery Mobile AJAX, а затем включить script в jQuery Mobile.
Мне все равно хотелось бы найти способ использовать AJAX и правильно обновить url. Или, по крайней мере, можно вызвать jQuery Mobile "Загрузка" сообщения (или испечь мою собственную).