ASP.NET Core' UrlHelperExtensions
没有用,因为它只接受object
的路由值,因此我无法添加/删除/合并路由值。在Core之前,UrlHelper
中的等价物有一个带RouteValueDictionary
的重载,这很容易。
所以我有一个执行路由的方法。收到object routeValues
,我想添加,然后转到IUrlHelper.Action(...)
。
我可以从object
转换为RouteValueDictionary
,但不能转回匿名object
。也许还有另一种方式?
public string GenerateOrderRoute(object routeValues = null)
{
var newRouteValues = //...I want to add/remove/merge to routeValues
// e.g. I want to add an area
return _urlHelper.Action("details", "orders", newRouteValues);
}
答案 0 :(得分:0)
我找到了一种方法,但它使用了动态,我不喜欢。如果你发现这种方法的问题,请告诉我。如果有更好/不同的方式,请告诉我。
public string GenerateOrderRoute(object routeValues = null)
{
// here I merge given route values with some of my own
var dict = (routeValues != null) ? new RouteValueDictionary(routeValues) : new RouteValueDictionary();
dict.Add("area", "commercial");
dict.Add("foo", "bar");
var expandoObject = new ExpandoObject();
var expandoDictionary = (IDictionary<string, object>)expandoObject;
foreach (var keyValuePair in dict)
{
expandoDictionary.Add(keyValuePair);
}
return _urlHelper.Action("details", "orders", expandoDictionary);
}