【问题标题】:Pass Dictionary<string,string> from POST to GET method (as url parameters) ASP.NET MVC将 Dictionary<string,string> 从 POST 传递到 GET 方法(作为 url 参数)ASP.NET MVC
【发布时间】:2016-05-08 05:18:04
【问题描述】:

我有问题。我想通过 RouteValueDictionary 通过 RedirectToAction 传递字典。有没有可能做到这一点?

我有一个 POST 方法:

[HttpPost]
public ActionResult Search(MyViewModel _myViewModel)
{
    IDictionary<string, string> parameters = new Dictionary<string, string>();

    foreach (var item in _myViewModel)
    {
        parameters.Add(item.ValueId, item.ValueName);   
    }

    return RedirectToAction("Search", new RouteValueDictionary(parameters));
}

我想要一个这样的网址:

http://localhost:26755/Searcher/Search?id1=value1&id2=value2&id3=value3

GET 方法应该是什么样子?

[HttpGet]
public ActionResult Search( **what's here?** )
{
    (...)
    return View(myViewModel);
}

【问题讨论】:

    标签: asp.net asp.net-mvc dictionary redirecttoaction


    【解决方案1】:

    首先,我们需要修复执行重定向的 Search 操作。如果您想在重定向时获得所需的查询字符串参数,则应使用IDictionary&lt;string, object&gt; 而不是IDictionary&lt;string, string&gt;

    [HttpPost]
    public ActionResult Search(MyViewModel _myViewModel)
    {
        IDictionary<string, object> parameters = new Dictionary<string, object>();
    
        foreach (var item in _myViewModel)
        {
            parameters.Add(item.ValueId, item.ValueName);   
        }
    
        return RedirectToAction("Search", new RouteValueDictionary(parameters));
    }
    

    一旦您在目标控制器操作中完成了该操作,您就可以在请求中使用 QueryString 字典:

    [HttpGet]
    public ActionResult Search()
    {
        // this.Request.QueryString is the dictionary you could use to access the
        // different keys and values being passed
        // For example:
        string value1 = this.Request.QueryString["id1"];
    
        ...
    
        // or you could loop through them depending on what exactly you are trying to achieve:
        foreach (string key in this.Request.QueryString.Keys)
        {
            string value = this.Request.QueryString[key];
            // do something with the value here
        }
    
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 2013-12-04
      相关资源
      最近更新 更多