2014-11-04 82 views
-2

對於我而言,我無法找到如何創建請求對象並在ASP.NET MVC中引入Get和Post參數。如何在ASP.NET MVC中獲取請求參數

我無法在動作構造函數中定義它們,我只是想直接從請求中提取信息。

+0

EF是查詢數據庫的工具。你爲什麼要使用它來訪問Web請求的查詢字符串值?它們是正交的概念。 – Servy 2014-11-04 18:08:56

+0

對不起,我的意思是微軟的MVC,這是漫長的一天 – mmorales 2014-11-04 18:09:53

+0

你想要直接訪問請求參數的事實應該響應你的設計。使用MVC範例的後果之一是,您不必擔心實現細節,哪些請求參數是。 – 2014-11-04 18:20:06

回答

3

你可以這樣做:

string strParam = HttpContext.Current.Request["someParameter"]; 
+0

謝謝,它已經從Linux轉移到了微軟,我敢肯定我正在混淆1000個不同的新名字中的一些哈哈。 – mmorales 2014-11-04 18:11:32

+0

儘管如此,您應該將路線中的請求參數映射到您的控制器方法。通過這樣做,MVC會自動將回發/查詢字符串參數發送到您的控制器方法。 – 2014-11-04 18:22:14

+0

我同意,但我目前只是在學習這門語言,並且經歷了它允許的所有不同的方式。我已經很容易爲網站設置和完整的json api,但只是對請求的傳遞和輸入感到好奇。 – mmorales 2014-11-04 18:29:14

1

作爲替代方案,你也可以做到這一點在你的路由配置。

你應該在你的項目「的Global.asax/global.cs」一個全球性的類文件,並在那裏應該是代碼配置控制器路由,例如....

private void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute("ImageGen_GetImage", "ImageGen/{action}", new { controller = "ImageGen", action = "GetImage", id = UrlParameter.Optional }); 
    } 

然後你控制器的方法可能是這樣的,

 [HttpGet()] 
    public void GetImage(string localImageUrl, int maxWidth, int maxHeight, string cache) 
    { 
    } 

在這個示例場景沒有上的getImage參數都是在路由URL「ImageGen/{}行動」。

因此,當您請求http://www.somesite.com/imagegen/getimage MVC知道imagegen映射到ImageGen控制器。因此它也知道這裏的{action}被聲明爲「GetImage」(因爲它在url中的imagegen之後,並且按照該順序匹配映射中的url)。現在,因爲在映射MVC的URL中沒有設置其他參數,所以在音頻上假設GetImage方法的參數來自查詢字符串。

所以,如果你是去http://www.somesite.com/imagegen/GetImage?localImageUrl=/images/myImage.png&maxWidth=1024&maxHeight=768&cache=1

隨後的getImage將localImageUrl,maxWidth,maxHeight被調用,並且緩存值,從查詢字符串拉,自動的。