2017-09-15 23 views
-4

我試圖在ASP.NETMVCC#到代碼的方法做如下如何代碼,其接受不知道現有它被稱爲參數變化的輸入參數的方法

  1. 的方法,將通過使用URL等被稱爲但下面不同的網址會有不同的參數。例如, ;

    - URL 1:host/myController/myMethod?param1=value1&param2=value2

    - URL 2:host/myController/myMethod?param3=value3&param4=value4&param5=value5

  2. 的方法不必知道前 調用的參數。參數本身和參數數量因呼叫而異,並且該方法將接受任何參數。

我試圖在方法中使用params string[] myParamaters作爲輸入,但是當我通過URL調用方法時myParameters接受一個空值。

如何爲像這樣的控制器方法定義參數?

+0

爲什麼不使用像'的ActionResult的MyMethod(字符串參數1,字符串參數2,字符串參數3,串param4,串param5)'的方法和基於去關閉你的輸入是什麼。我建議使用一個數據對象,一旦你得到5個變量。 – lloyd

+0

我在這裏放5個參數,但實際上參數的數量可以很多。可能超過30個,我不知道請求中可能會調用哪些參數。所以基本上,該方法將接受任何內容,然後解析方法內的參數名稱和值。 – user3622488

+2

[那個答案]有什麼問題(https://stackoverflow.com/questions/46246052/how-to-call-ac-sharp-function-by-using-urls-varying-in-number-of-parameters)所以你再次問它 –

回答

5

您應該能夠通過Request.QueryString解析QueryString。例如:

public ActionResult MyMethod() 
{ 
    foreach(string key in Request.QueryString) { 
     // Do stuff with Request.QueryString[key] 
    } 
} 

這樣,您將不需要方法定義中的可變參數列表。

3

您可以從HttpRequest.QueryString返回的字典中獲取URL參數。而不是將參數烘焙到操作方法的原型中,只需在控制器中抓取它們即可。

ActionResult MyAction() //No params 
{ 
    var params = HttpContext.Current.Request.QueryString; 
} 
相關問題