ASP.NET Core MVC应用程度中如何读取当前URL请求参数(QueryString)的值?

在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")
    {
    }
}

欢迎分享,(木庄网络博客交流QQ群:562366239

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论