O MVC ActionLink adiciona todos os parâmetros (opcionais) do URL atual
O muito famosoActionLink
:
<%: Html.ActionLink("Back to List", "Index")%>
Agora, este link está na minha exibição Detalhes. A visualização Índice é uma página de pesquisa. O URL disso é assim:
http://localhost:50152/2011-2012/Instelling/Details/76?gemeente=Dendermonde&postcode=92**&gebruikerscode=VVKSO114421&dossiernr=114421%20&organisatie=CLB
Como você pode ver, bastante a quantidade de parâmetros. Obviamente, quero manter todos esses parâmetros quando retornar à página Índice, por isso preciso adicioná-los noActionLink
.
Agora, estou cansado de fazer isso manualmente, tudo bem para 1, mas não para 6. Isso deve ser muito mais fácil.
Pergunta: Como faço para retornar todos os parâmetros do URL atual para o diretórioActionLink
como opcionalRouteValues
.
Eu estive olhando paraRequest.QueryString
. Tem que ser algo com isso. Eu estava pensando em escrever algum método estático emGlobal.asax
fazendo o trabalho, mas sem sorte ainda. Talvez haja uma maneira fácil de fazer isso que eu não conheço?
Editar: Isto é o que eu vim com (que funciona)
Noglobal.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))%>
Onde melhor coloco esse código? não emGlobal.asax
Eu acho...
Edição 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") %>