Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编辑传递到IUrlHelper的匿名对象_C#_Asp.net_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 编辑传递到IUrlHelper的匿名对象

C# 编辑传递到IUrlHelper的匿名对象,c#,asp.net,asp.net-core,asp.net-core-mvc,C#,Asp.net,Asp.net Core,Asp.net Core Mvc,ASP.NET核心没有那么有用,因为它只接受路由值的object,所以我不能添加/删除/合并路由值。在Core之前,UrlHelper中的等价物有一个重载,它占用了一个RouteValueDictionary,这使它变得简单 因此,我有一个执行路由的方法。它接收对象routeValue,我想添加到它,然后传递到IUrlHelper.Action(…) 我可以从对象转换为路由值字典,但不能转换回匿名对象。也许还有别的办法 public string GenerateOrderRoute(objec

ASP.NET核心没有那么有用,因为它只接受路由值的
object
,所以我不能添加/删除/合并路由值。在Core之前,
UrlHelper
中的等价物有一个重载,它占用了一个
RouteValueDictionary
,这使它变得简单

因此,我有一个执行路由的方法。它接收
对象routeValue
,我想添加到它,然后传递到
IUrlHelper.Action(…)

我可以从
对象
转换为
路由值字典
,但不能转换回匿名
对象
。也许还有别的办法

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);
}

我找到了一种方法,但它使用动态,我不喜欢。如果你发现这种方法有问题,请告诉我。如果有更好/不同的方法,请告诉我

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);
}
公共字符串生成器OrderRoute(对象routeValues=null)
{
//在这里,我将给定的路由值与我自己的一些值合并
var dict=(routeValues!=null)?新建RouteValueDictionary(routeValues):新建RouteValueDictionary();
添加(“区域”、“商业”);
dict.Add(“foo”、“bar”);
var expandoObject=新的expandoObject();
var expandoDictionary=(IDictionary)expandooobject;
foreach(dict中的var keyValuePair)
{
expandoDictionary.Add(keyValuePair);
}
return _urlHelper.Action(“详细信息”,“订单”,expandoDictionary);
}