Chcę utworzyć proste rozszerzenie HtmlHelper.ActionLink
, które dodaje wartość do słownika wartości trasy. Parametry byłby identyczny HtmlHelper.ActionLink
, tj .:Dołącz do routeValues w metodzie rozszerzenia HtmlHelper
public static MvcHtmlString FooableActionLink(
this HtmlHelper html,
string linkText,
string actionName,
string controllerName,
object routeValues,
object htmlAttributes)
{
// Add a value to routeValues (based on Session, current Request Url, etc.)
// object newRouteValues = AddStuffTo(routeValues);
// Call the default implementation.
return html.ActionLink(
linkText,
actionName,
controllerName,
newRouteValues,
htmlAttributes);
}
Logika co dodaję do routeValues
jest nieco rozwlekły, stąd moje pragnienie, aby umieścić go w metodę rozszerzenia pomocnika zamiast powtarzać to w każdym widoku.
Mam rozwiązanie, które wydaje się działać (Wysłany jako odpowiedź poniżej), ale:
- Wydaje się być niepotrzebnie skomplikowane dla tak prostego zadania.
- Cała operacja uderza mnie jako delikatną, tak jak w niektórych przypadkach, gdzie zamierzam wywołać wyjątek NullReferenceException lub coś podobnego.
Zamieszczaj wszelkie sugestie dotyczące ulepszeń lub lepszych rozwiązań.
Jeśli jesteś zainteresowany, mam pytanie to pytanie, które jest związane z tej odpowiedzi: http://stackoverflow.com/questions/9595334/correctly-making-an-actionlink-extension-with-htmlattributes –