加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用多值键创建RouteValueDictionary

发布时间:2020-12-15 23:21:48 所属栏目:asp.Net 来源:网络整理
导读:我想返回一个RedirectToRouteResult,将用户发送到如下所示的URL: /MyController/MyAction/id?newid=3newid=5newid=7 newid参数有几个值. 我的电话看起来像:return RedirectToAction(string.Empty,routeValues); 这是我迄今为止所尝试过的,这不行: // ...?
我想返回一个RedirectToRouteResult,将用户发送到如下所示的URL:
/MyController/MyAction/id?newid=3&newid=5&newid=7

newid参数有几个值.

我的电话看起来像:return RedirectToAction(string.Empty,routeValues);

这是我迄今为止所尝试过的,这不行:

// ...?newid%5B0%5D=3&newid%5B1%5D=5&newid%5B2%5D=7
var routeValues = new RouteValueDictionary {
    {"id",myid},{"newid[0]",3},{"newid[1]",5},{"newid[2]",7},};

// ...?newid=System.Int32%5B%5D
var routeValues = new { id = myid,newid = new int[] { 3,5,7 } };

// ...?newid=System.String%5B%5D
var routeValues = new { id = myid,newid = new string[] { "3","5","7" } };

// ...?newid=System.Int32%5B%5D
var routeValues = new RouteValueDictionary {
    {"id",{"newid",new int[] { 3,7 } }
};

使这项工作有什么秘密?

解决方法

这是框架中真正缺失的一件事.你最好的办法是手动滚动它:
public ActionResult Foo()
{
    var ids = new[] { 3,7 };
    var url = new UriBuilder(Url.Action("MyAction","MyController",new { id = "123" },Request.Url.Scheme));
    url.Query = string.Join("&",ids.Select(x => "newid=" + HttpUtility.UrlEncode(x.ToString())));
    return Redirect(url.ToString());
}

将其放入自定义扩展方法中可以增加可读性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读