这是我在浏览器中看到的 URI 编码查询字符串:
?itemsOnly=true&addedArticles%5B%5D=202&addedArticles%5B%5D=011&addedArticles%5B%5D=280&addedArticles%5B%5D=208&addedArticles%5B%5D=020
这是我的查询字符串的相关部分,如 ASP.NET 中的 Request.QueryString[1] 属性所示:
"202,011,280,208,020"
即使查询字符串位于请求中,我的 Controller 也会忽略它。
我尝试过以下方法
public ActionResult ActionName(bool itemsOnly = false, string addedArticles = "")
public ActionResult ActionName(bool itemsOnly = false, string[] addedArticles = null)
public ActionResult ActionName(bool itemsOnly = false, IEnumerable<string> addedArticles = null)
但在每种情况下,addedArticles 都是空的。
如何告诉 ASP.NET Controller 将 Request.QueryString[1] 保存到类型化变量?
最佳答案
您的 Controller 操作应该是
public ActionResult ActionName(string[] addedArticles, bool itemsOnly = false)
您可以向其发送一个查询字符串,例如
?addedArticles=[X]&addedArticles=[X2]&addedArticles=[X3]
其中 [X]、[X2]、[X3]... 是您的字符串。
您可以尝试使用它来编码您的查询字符串
public static string ToQueryString(this NameValueCollection self)
=> string.Join("&", self.AllKeys.Select(a => a + "=" + HttpUtility.UrlEncode(self[a])));
关于c# - 在 ASP.NET 中接收查询字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50353805/