我的测试网址:
localhost:61578/?type=promotion&foo=bar
我通常使用这种方式获取type
参数的值:
public IActionResult Index(string type)
{
// type = "promotion"
}
我的问题:如何检测网址中的所有参数?我想阻止访问带有一些未知参数的页面。
这样的事情:
public IActionResult Index(string type, string foo)
{
if (!string.IsNullOrEmpty(foo))
{
return BadRequest(); // page 404
}
}
问题是:我不确切知道用户输入的名称。所以,它可以是:
localhost:61578/?bar=baz&type=promotion
答案 0 :(得分:4)
您可以使用HttpContext Type获取查询字符串
var context = HttpContext.Current;
然后,您可以获取整个查询字符串:
var queryString = context.Request.QueryString
// "bar=baz&type=promotion"
或者,您可以获得对象列表:
var query = context.Request.Query.Select(_ => new
{
Key = _.Key.ToString(),
Value = _.Value.ToString()
});
// { Key = "bar", Value = "baz" }
// { Key = "type", Value = "promotion" }
或者,你可以制作一本字典:
Dictionary<string, string>queryKvp = context.Request.GetQueryNameValuePairs()
.ToDictionary(_=> _.Key, _=> _.Value, StringComparer.OrdinalIgnoreCase);
// queryKvp["bar"] = "baz"
// queryKvp["type"] = "promotion"