将相同的查询字符串参数应用到我在 ASP.MVC 中的所有链接

Apply same query string paramter to all my links in ASP.MVC

我正在使用查询字符串来决定我的 MVC 应用程序应该使用哪个数据库。

http://localhost/control_groups?server=test-server

所以我创建了一个 ApplicationController,它是我所有其他控制器的超类,它每次都获取此参数并将其放入 ViewBag 中。

但是我所有的链接都需要添加参数。像这样手动添加好像很费工夫:

<li>@Html.ActionLink("Control types", "Index", "control_types", new { server = ViewBag.ServerName},null)</li>

是否有更智能的方法来为所有生成的链接自动设置此项?

您可以为 HTMLHelper 编写一个扩展

public static class ActionLinkExtension
{
    public static MvcHtmlString CustomActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
    {
        var routeDictionary = new RouteValueDictionary(routeValues);
        //Add the server=test-server to all action link
        routeDictionary.Add("server", "test-server");
        return htmlHelper.ActionLink(linkText, actionName, controllerName, routeDictionary, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
    }
}

并在razor视图中使用扩展方法

<li>@Html.CustomActionLink("Control types", "Index", "control_types", null, null)</li>