2009-07-29 4 views
0

Я знаю, что это, вероятно, что-то легко реализовать, но у меня есть немного проблем с поиском ответа. Подобно тому, как Stackoverflow позволяет вам продолжить рассмотрение вопросов с помощью тегов, я пытаюсь реализовать их. Таким образом, я создал список «метки» на моей странице MVC, которая выглядит следующим образом:Добавление к текущему URL-адресу в ASP.NET MVC

<%For Each item As myItem In ViewData("topTags")%> 
    <li><%=Html.ActionLink(Html.Encode(item.tagName), "Index", New With {.tags = item.tagName})%</li> 
<%Next%> 

Это создает хорошие URL-адреса, которые выглядят как http://mysite.com/controller/index?tags=MyTageName

У меня есть метод контроллера, который принимает значение параметра тэгу и мы будем рады ... на первом уровне. Я хочу, чтобы иметь возможность отображать представление, которое возвращается здесь, и для каждого из моих тегов в приведенном выше коде, добавьте новое имя тега в url. Мои новые генерируемые адреса будут выглядеть следующим образом:

http://mysite.com/controller/index?tags=TagNameIClickedBefore+TagNameInForEachLoop

Надеется, что это имеет смысл ... какие-нибудь идеи? Создать собственный HTMLHelper? Магическая функция в пространстве URL.namespace отсутствует? :)

ответ

2

Я думаю, это то, что вы хотите сделать:

<%For Each item As myItem In ViewData("topTags")%> 
    <li><%=Html.ActionLink(Html.Encode(item.tagName), "Index", 
     New With {.tags = Request.QueryString("tags") & "+" & item.tagName})%></li> 
<%Next%> 
+0

Это подействовало, и, безусловно, достаточно легко. У меня есть if, если затем проверка, чтобы увидеть, является ли request.querystring («Теги») пустым в цикле. Еще один вопрос: как получить знак + для показа без htmlEncoded или это просто плохая практика? – Tommy

+0

Я думаю, было бы лучше, если бы вы просто использовали пространство там вместо знака +. –