Вопрос по asp.net-mvc-3, razor, asp.net-mvc – Получить URL текущего представления с помощью HtmlHelper в ASP.NET MVC 3

4

Я задаю аналогичный вопросВот Я думаю, что это действительно легко (конечно, не для меня). У меня есть метод расширения для помощника Html, и мне нужно получить URL текущего представления с помощью HtmlHelper. У кого-нибудь есть идеи по этому поводу?

@ Ник Борк На самом деле я задаю главный вопрос здесь:stackoverflow.com/questions/10069687/…  Мне нужно значение для атрибута действия в теге формы, и я думаю, что это значение равно текущему URL-адресу представления. Saeid
Просмотр не имеет URL-адресов, действия контроллера. Вид - это просто капля HTML. Ваши действия делают некоторые CRUD на сервере, а затем решают, какой двоичный объект HTML, чтобы вернуться. Вы НИКОГДА не можете получить доступ к представлению, не выполняя действия контроллера (за исключением PartialView, вложенного в представление). Теперь чаще всего имена представлений совпадают с именами действий, но это не всегда так. Я добавил пример кода для использования помощника Url. Помощник Url позволяет вам получить то, каким будет URL для определенного маршрута или действия контроллера. Это должно помочь вам заполнить тег действия формы. Nick Bork
Я согласен с @NickBork. Представления не имеют URL для каждого слова, так как они не являются интернет-доступным ресурсом. То, что вы можете захотеть, это URL исходного запроса. Вы должны быть в состоянии извлечь через объект HttpRequestBase с помощью ряда методов. Roman
Вы должны иметь в виду, что представление - это не то же самое, что действие контроллера. Маршруты MVC основаны на контроллерах и действиях. Действия могут указать любой вид в качестве вывода. Это означает, что вы не всегда можете зависеть от того, что имя представления совпадает с именем действия. Можете ли вы дать нам пример того, что вы пытаетесь с этим сделать? Nick Bork

Ваш Ответ

5   ответов
0

g () или Request.Url.AbsoluteUri.

9

с которой вы ссылались, я думаю, что вы хотите использовать помощника Url для получения URL-адреса для действия формы, но я мог неправильно понять, что вы хотели:

В представлении:

 @Url.Action(null) returns the current controller/action
 @Url.Action("Action") returns a custom action with current controller
 @Url.Action("Action","Controller") returns a custom controller and action

В помощнике HTML:

 public static MvcHtmlString MySpecialHelper(this HtmlHelper htmlHelper)
 {
      UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext,htmlHelper.RouteCollection);
      string url = urlHelper.Action("Controller","Action");

      //To get the action based on the current Action/Controller use:
      url = urlHelper.Action(htmlHelper.ViewData["action"] as string);

      //or
      url = urlHelper.Action(null);

      return new MvcHtmlString(url);
 }
6

например, вызываемый контроллер или метод действия

Вы можете получить доступ кRouteData словарь изViewContext объект

будет так

@ViewContext.RouteData.Values["Controller"]

сRouteData В словаре вы можете получить всю необходимую информацию о контроллере, действии и дополнительных параметрах & apos; имя, в зависимости от того, что вы хотите

5

то вы можете просто получить его черезRequest.Url объект. Это возвращает Uri, но если вы хотите необработанный URL, тоRequest.RawUrl.

0

передавая страницу объекта в качестве ссылки, например так:

@helper GoHome(WebViewPage page)
{
   <a href="@page.Url.Action("Index", "Home")"></a>
}

В представлении просто используйте:

@Links.GoHome(this)

Похожие вопросы