我正在使用查询字符串来决定我的MVC应用程序应该使用哪个数据库。
http://localhost/control_groups?server=test-server
所以我创建了一个ApplicationController,它是我所有其他控制器的超类,它每次都抓取这个参数并将它放在ViewBag中。
但是需要将参数添加到我的所有链接中。手动添加它们似乎需要做很多工作:
<li>@Html.ActionLink("Control types", "Index", "control_types", new { server = ViewBag.ServerName},null)</li>
是否有更智能的方法为所有生成的链接自动设置此内容?
答案 0 :(得分:2)
您可以为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));
}
}
在剃刀视图中使用扩展方法
<li>@Html.CustomActionLink("Control types", "Index", "control_types", null, null)</li>