在ASP.NET MVC 5的应用程序开发中,要读取当前URL请求中的参数值,我们可以使用Request.QueryString,如下:
var myQueryString = Request.QueryString["myQueryString"]
但在ASP.NET Core MVC中没有了Request.QueryString,有Request.Query可以读取到当前请求的参数,但其返回值是StringValues,类似如下:
string myQueryString = HttpContext.Request.Query["myQueryString"]
那么,在ASP.NET Core MVC应用程度中,有哪些方式可以读取当前URL请求参数(QueryString)的值呢?
参考解决方法一:
在ASP.NET Core MVC或者ASP.NET Core Web API的应用程序中,你可以使用[FromQuery]这种特性可绑定特定的参数实体映射,示例代码如下:
[HttpGet()]
public IActionResult Get([FromQuery(Name = "page")] string page)
{
// 你的逻辑代码
}
参考解决方法二:
如果你想要使用Request.Query["page"]这种方式来读取当前URL的参数值,虽然它返回的是一个IQueryCollection,但如果当URL中有且仅有一个指定参数名的时候,你可以使用.ToString()方法来得到参数的值,如下:
string page = HttpContext.Request.Query["page"].ToString();
当URL中的同一个参数名被指定多次时,会返回以逗号分隔的字符串,比如URL参数字符为?page=1&page=2,通过ToString()方法得到的结果为1,2。
所以,建议最好还是使用[FromQuery]这种绑定特定查询参数实体映射的方式来读取URL参数。
参考解决方法三:
如果要在Razor视图中获取当前URL的请求参数,则可以如下:
@{
Microsoft.Extensions.Primitives.StringValues queryVal;
if (Context.Request.Query.TryGetValue("yourKey", out queryVal) &&
queryVal.FirstOrDefault() == "yourValue")
{
}
}
相关阅读 >>
asp.net core mvc应用程度中如何读取当前url请求参数(querystring)的值?
详解.net完成configuration读取配置的实例详解
更多相关阅读请进入《asp.net》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。