Передать относительный URL ASP.NET MVC3 - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь передать список URL с атрибутами Id из контроллера в представление. Я могу передать ссылку <a href=...> обратно, но я не думаю, что написание абсолютного пути 'localhost' - это чистый способ приблизиться к этому. Я не могу передать ActionLink обратно, поскольку он возвращает полную строку. Это простое решение этой проблемы? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Используя эту перегрузку метода UrlHelper.Action() и объекта Request, вы можете получить полный URL-адрес, включая параметры маршрута, такие как идентификаторы и фактическое имя хоста приложения.

string url = Url.Action("action", "controller", 
    new System.Web.Routing.RouteValueDictionary(new { id = id }), 
    "http", Request.Url.Host); 

UrlHelper доступно в контроллере через его свойство Url.

Затем вы можете передать такой URL в ваше представление.

Можно также использовать UrlHelper непосредственно внутри вашего представления для создания URL-адресов для действий контроллера. Зависит от того, действительно ли вам нужно создавать их внутри контроллера.


Редактировать в ответ на комментарии:

Везде, где вам нужно разместить URL-адреса, этот «конструктор URL», который вы ищете, по-прежнему является UrlHelper. Вам просто нужно передать его (или сгенерированные URL-адреса) туда, где он вам нужен, находясь внутри контроллера, представления или пользовательского помощника.

Чтобы получить ссылки внутри HTML-структуры несортированного списка, о которой вы упомянули, вам нужно поместить якоря в элементы списка, например:

<ul>
    <li><a href="URL">Link</a></li>
    ...
</ul>

Опять же, вам просто нужно получить URL-адреса откуда-то, и это будет UrlHelper.

0 голосов
/ 15 декабря 2011

Просто и легко.

 <a href="@Url.Action("action","controller",new {id = my_var_id})">text</a>

идентификатор маршрута = параметр, который будет вставлен в ваш метод.

например.

function Details(int id) {
   //id has the value of my_var_id
 }
...