Response.RedirectToRoutePermanant не меняет URL-адрес на клиенте

Я работаю над проектом MVC, используя Ext.Net TreeGrid. У меня есть древовидная сетка на странице "PieChart2". Когда я впервые загружаю PieChart2, я загружаю дерево с корневыми узлами. Когда я нажимаю на один из узлов, я хочу передать идентификатор узла в том же URL-адресе (/Home/PieChart2/nodeid). Я пытаюсь добиться этого, перенаправляя URL-адрес, используя следующий код в событии щелчка древовидной сетки.

idVal — это идентификатор узла дерева, по которому был сделан щелчок.

string newUrl = "/Home/PieChart2/" + idVal ;

Response.RedirectToRoutePermanent("PieRoute", new { id = idVal });

PieRoute выглядит так в Global.asax.

routes.MapRoute("PieRoute", "{controller}/{action}/{id}", new { controller = "Home", action = "PieChart2", id = UrlParameter.Optional });

Я вижу два запроса к серверу на перенаправление: 1) код состояния 301 с исходным URL-адресом и 2) новый URL-адрес. URL-адрес также обрабатывается правильно, но браузер по-прежнему показывает «/Home/PieChart2» вместо «Home/PieChart2/nodeid».

Я делаю это правильно? Если да, то по какой причине он может не работать?


person Sophie Raphel    schedule 25.04.2011    source источник
comment
Глупый вопрос: исходный HTTP-запрос происходит через AJAX или через стандартный синхронный HTTP-пост? Если по запросу AJAX, обрабатываете ли вы перенаправление HTTP 301 в своем коде AJAX?   -  person Shan Plourde    schedule 25.04.2011
comment
Шан, это синхронизирующий HTTP-запрос. Спасибо   -  person Sophie Raphel    schedule 25.04.2011
comment
Я вижу - на стороне клиента, как вы обрабатываете запрос на перенаправление в своем коде Ajax? Если вы не приспособили его, вам, вероятно, придется. См. stackoverflow.com/questions/199099/ в качестве примера.   -  person Shan Plourde    schedule 25.04.2011


Ответы (1)


Браузер должен обновляться, если только это не вызов ajax или вызов из элемента фрейма. В этих случаях это не будет по замыслу.

person Adam Tuliper - MSFT    schedule 25.04.2011
comment
Адам, Это точно из каркасного элемента. Есть ли способ обновить URL-адрес главного окна из фрейма? Спасибо! - person Sophie Raphel; 25.04.2011
comment
нет - это было бы большой проблемой безопасности .. Я мог бы тогда сказать www.google.com, когда вы были на каком-то другом «плохом» сайте. Если вы хотите, чтобы оно обновлялось, ваше главное окно должно быть тем URI, который вы загружаете. В firefox for ex вы можете щелкнуть правой кнопкой мыши по определенному разделу страницы и просмотреть информацию о нем, чтобы увидеть ссылку. Вот такая забава с рамками. Я думаю, вы можете изменить конец URI родителей, например. xyz.com/default.aspx#sometag, но это, конечно, не меняет весь URI - person Adam Tuliper - MSFT; 30.04.2011