在 .NET 中获取 URL 的查询字符串参数非常简单,主要依赖于 Uri 和 NameValueCollection 类型,尤其是在 ASP.NET 或 ASP.NET Core 环境中。以下是几种常见方式:
1. 在 ASP.NET Web Forms 或 MVC 中(使用 HttpRequest)
如果你在传统的 ASP.NET 应用中,可以直接通过 Request.QueryString 获取参数:
string value = Request.QueryString["paramName"]; // 获取 paramName 的值 // 示例:URL 是 http://example.com/page?name=john&age=25 string name = Request.QueryString["name"]; // 结果是 "john" string age = Request.QueryString["age"]; // 结果是 "25"2. 在 ASP.NET Core 中(使用 HttpContext.Request.Query)
ASP.NET Core 使用 IQueryCollection 来表示查询参数,可通过 HttpContext 获取:
string value = HttpContext.Request.Query["paramName"]; // Query 返回的是 StringValues,可直接当作 string 使用 if (HttpContext.Request.Query.ContainsKey("name")) { var name = HttpContext.Request.Query["name"]; }3. 纯 .NET(控制台或非 Web 环境)解析任意 URL
如果不在 Web 上下文中(比如控制台程序),可以手动解析 URL 的查询字符串:
var uri = new Uri("http://example.com/page?name=john&age=25"); var query = System.Web.HttpUtility.ParseQueryString(uri.Query); string name = query["name"]; // "john" string age = query["age"]; // "25"注意:需要引用 System.Web 命名空间,在某些项目类型(如 .NET Core 控制台)中可能需要安装 Microsoft.AspNetCore.WebUtilities 或使用替代方法。
4. 使用 Microsoft.AspNetCore.WebUtilities(推荐用于非 Web 项目)
在 .NET Core / .NET 5+ 的非 ASP.NET 项目中,推荐使用 QueryHelpers 或手动解析:
using Microsoft.AspNetCore.WebUtilities; var uri = new Uri("http://example.com/page?name=john&age=25"); var queryParameters = QueryHelpers.ParseQuery(uri.Query); string name = queryParameters["name"]; // 注意返回的是 StringValues string age = queryParameters["age"];这个方法不需要引用 System.Web,更适合跨平台应用。
基本上就这些。根据你的项目类型选择合适的方法即可。Web 项目用 Request.QueryString 或 HttpContext.Request.Query,非 Web 项目建议用 QueryHelpers。
