Самый известный ActionLink
:
<%: Html.ActionLink("Back to List", "Index")%>
Теперь эта ссылка находится в моем подробном представлении. Представление Index - это страница поиска. URL-адрес выглядит следующим образом:
http://localhost:50152/2011-2012/Instelling/Details/76?gemeente=Dendermonde&postcode=92**&gebruikerscode=VVKSO114421&dossiernr=114421%20&organisatie=CLB
Как видите, довольно много параметров. Очевидно, что я хочу сохранить все эти параметры, когда вернусь на страницу Index, поэтому мне нужно добавить их в ActionLink
.
Теперь я устал делать это вручную, это нормально для 1, но не для 6. Это должно пройти намного проще.
Вопрос: Как вернуть все параметры текущего URL-адреса в ActionLink
как необязательный RouteValues
.
Я искал Request.QueryString
. Это должно быть что-то с этим. Я думал о написании статического метода в Global.asax
выполнении задания, но еще не успел. Может быть, есть простой способ сделать это, о котором я не знаю?
Изменить: Это то, что я придумал (что работает)
В global.asax:
public static RouteValueDictionary optionalParamters(NameValueCollection c) {
RouteValueDictionary r = new RouteValueDictionary();
foreach (string s in c.AllKeys) {
r.Add(s, c[s]);
}
return r;
}
Details.aspx:
<%: Html.ActionLink("Back to List", "Index", MVC2_NASTEST.MvcApplication.optionalParamters(Request.QueryString))%>
Где лучше всего поставить этот код? не в Global.asax
Я думаю...
Изменить 2:
using System;
using System.Web.Mvc;
namespace MVC2_NASTEST.Helpers {
public static class ActionLinkwParamsExtensions {
public static MvcHtmlString CustomLink(this HtmlHelper helper, string linktext) {
//here u can use helper to get View context and then routvalue dictionary
var routevals = helper.ViewContext.RouteData.Values;
//here u can do whatever u want with route values
return null;
}
}
}
<%@ Import Namespace="MVC2_NASTEST.Helpers" %>
...
<%: Html.ActionLinkwParams("Index") %>