2013-04-16 4 views
0

У меня есть область с именем пользователя, и я пишу MapRoute для него:ASP.NET MVC 2 - Как написать RouteUrl с свойством Url в контексте. MapRoute изменен?

context.MapRoute(
     "User_Category", 
     "User/Category/{categoryId}", 
     new { controller = "Product", action = "Category", categoryId = UrlParameter.Optional }, 
     new { categoryId = @"\d+" } 
); 

Это другой пример, у меня есть ссылка:

<%=Html.ActionLink("Điện thoại", "Category", new { area = "User", controller = "Product", id = 1 }, null) %> 
(http://localhost:8578/User/Product/Category/1) 

Конечно, я не могу это сделать:

<%=Html.ActionLink("Điện thoại", "User/Category", new { area = "User", controller = "Product", id = 1 }, null) %> 

Следующее MapRoute выше, оно изменено. Это означает, что он находится в зоне, я не знаю, как передать название участка в ActionLink иметь: http://localhost:8587/User/Category/1

Но что я хочу заменить ActionLink на RouteUrl, чтобы получить абсолютную связь как **http://localhost:8587/User/Category/1**

Что мне делать? И как я могу удалить имя пользователя в URL? Спасибо за просмотр!

ответ

1

Я думаю, что это связано с тем, что ваш маршрут определяется параметром маршрута categoryId, но ваша ссылка на действие использует параметр только id? Если да, то попробуйте вместо этого:

<%=Html.ActionLink("Điện thoại", "Category", new { area = "User", controller = "Product", categoryId= 1 }, null) %> 

Если вы хотите полный абсолютный URL, то вы можете сделать:

<a href="<%= Html.ViewContext.HttpContext.Request.Url.GetLeftPart(UriPartial.Authority) + Url.Action("Category", new { area = "User", controller = "Product", categoryId= 1 }) %>">Điện thoại</a> 
+0

@lan Рутледж: Спасибо! Но я дал ActionLink, чтобы продемонстрировать это, я хочу знать, как отображать Link Name («Điện thoại») в Absolute Link (RouteUrl), включая название области. –

+0

Я изменил ответ, чтобы включить детали для абсолютного URL-адреса –

+0

Хорошо! Я попробую сейчас. –