我认为在通过强类型操作链接创建actionlink时,没有可用于添加除动作参数列表之外的参数的重载。我想要的是添加额外的参数,这些参数将在查询字符串中提供。
例如,在控制器 MyController 中使用操作 MyAction(int id)。
Html.ActionLink(mc => mc.MyAction(5),“我的行动”)会产生类似 MyController / MyAction / 5 的链接,但我想要的是追加像这样的查询。
的 myController的/ MyAction / 5?QS =值即可。有没有办法,使用强类型的动作链接来实现这一点。
答案 0 :(得分:4)
<%=Html.ActionLink(LinkName, Action, Controller, new { param1 = value1, param2 = value2 }, new { })%>
答案 1 :(得分:1)
为此创建自定义帮助程序。尝试这样的事情:
public static string MyActionLinkWithQuery<TController>(this HtmlHelper helper, Expression<Action<TController>> action, string linkText,
RouteValueDictionary query) where TController : Controller
{
RouteValueDictionary routingValues = ExpressionHelper.GetRouteValuesFromExpression(action);
foreach(KeyValuePair<string, object> kvp in query)
routingValues.Add(kvp.Key, kvp.Value);
return helper.RouteLink(linkText, routingValues, null);
}
答案 2 :(得分:0)
您无需创建扩展方法,只需更改路由配置:
routes.MapRoute(null,
"MyController/MyAction/{id}",
new { controller = "MyController", action = "MyAction", id="" } // Defaults
);
routes.MapRoute(
null
, // Name
"{controller}/{action}", // URL
new { controller = "MyController", action = "MyAction" } // Defaults
);