2017-06-03 81 views
0

我的測試網址:如何獲取asp.net mvc中的所有url參數?

localhost:61578/?type=promotion&foo=bar 

我通常使用這種方式來獲得type參數的值:

public IActionResult Index(string type) 
{ 
    // type = "promotion" 
} 

我的問題:如何檢測在url中的所有參數?我想阻止訪問帶有一些未知參數的頁面。

事情是這樣的:

public IActionResult Index(string type, string foo) 
{ 
    if (!string.IsNullOrEmpty(foo)) 
    { 
     return BadRequest(); // page 404 
    } 
} 

的問題是:我不知道到底是什麼輸入用戶名。因此,可以這樣:

localhost:61578/?bar=baz&type=promotion 

回答

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" 
+0

非常感謝!這有助於很多:) – Vayne