2010-01-15 3 views
0

Мой пример:Ссылка на местоположение на странице (#id) через механизмы ASP.NET MVC?

У меня есть View, который представляет собой набор тегов div, в котором есть контент, заполненный из данных.

[Несколько из них, с различными LOCATION_ID, естественно]

<div> 
    <a name="location_id"></a> 
    Content 
</div> 

Теперь у меня есть форма [в своей собственной точки зрения] что отправляет содержимое, которое добавляет еще одну запись в DataModel. Как только запись создается и отправляется, я перенаправляю обратно в Action, который возвращает View с листингом <div>.

Моя задача:

Я хотел бы страницу, чтобы сфокусировать <div> блок, который был только что создан. В идеале я бы хотел сделать это без использования javascript, - я бы хотел использовать конец #location_id для URL. Нравится так: http://site/Controller/Action/Id#12 (или что-то в этом роде).

У любого есть какие-либо советы о том, как это сделать?

Edit: Я не могу использовать Redirect метод контроллера (. Или что-нибудь с участием необработанный URL Он должен быть направлен либо через Controller/Action или Route механизмов).

ответ

1

Извините за растрату все время ...

Я только что вспомнил, что вы можете отделить сегменты маршрута с другими литералов характера, чем «/»,

поэтому, естественно, я могу построить маршрут, как это:

routes.MapRoute(
"MyRoute", 
"{controller}/{action}/{id}#{locid}", 
new { ... }); 

проблема решена.

0

Вы в значительной степени ответили на свой вопрос. Перенаправляйте URL-адрес, похожий на тот, который вы указали (http://site/Controller/Action/Id#12), и создайте тег привязки в своем представлении с атрибутом имени непосредственно перед записью, к которой вы хотите перейти.

+0

:-) Ну, конечно, часть «Перенаправление на URL» очевидна, я ищу способ сделать это с контроллера. Я должен был упомянуть, что я не могу перенаправить на «raw url», мне нужно настроить свою маршрутизацию на действия или маршруты. – Terje

1

При возврате из действия, которое вы, вероятно, используете RedirectToAction(), вы можете передать значения маршрута.

Вы можете иметь маршрут как этот

routes.MapRoute(
"DisplayDivsRoute", 
"{controller}/{action}/{focusedDivId}", // URL with parameters 
new {controller = "Content", action = "Display", focusedDivId = "1"}, null); 

Когда в сообщение ваших действий (если вы сохраняете новое содержание объекта) вы можете затем

return RedirectToAction() 

НТН

+0

Если вы хотите использовать его в Маршрутах, вы можете использовать RedirectToRoute() и построить для него параметры, жестко кодируя его или просматривая свой RouteTable. – mare

1

В MVC 3 вы можете использовать аргумент фрагмента в этом Html.ActionLink функция перегрузки:

общественности статической MvcHtmlString ActionLink ( это HtmlHelper HtmlHelper, строка LinkText, строка ActionName, строка controllerName, строка протокола, строка HostName, строка фрагмента, routeValues ​​объектов, объекта htmlAttributes )

http://msdn.microsoft.com/en-us/library/dd460522.aspx

Смежные вопросы