将相同的查询字符串参数应用到我在 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>
我正在使用查询字符串来决定我的 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>