我怎麼能在控制器中創建一個方法,並且只需要輸入一些參數,然後在點擊一個表單提交之後就會計算出來呢?底下,它是如何找到正確的方法,以及它如何發現我只是想要這些論點?asp.net mvc怎麼弄出來的?
5
A
回答
8
一言以蔽之:
路由引擎處理的HttpRequest,並檢查請求的URL。當它找到第一個路由匹配時,它會創建一個新的實例
MvcRouteHandler
,並將它的URL的分解標記傳遞給RouteValueDictionary。路線的
MvcRouteHandler
接受請求,並嘗試實例的控制器類實例。按照慣例,它會查找一個名爲「XXXXXXController」的類,其中X由路由中的{controller}參數替換。一旦它找到的控制器,它調用在其上,由路線的{動作}參數給出的適當的方法。路徑中存在的任何命名參數(如{id})都會作爲參數傳遞給方法。
基本上,ASP.Net MVC「知道」的一切都來自路由信息。它不能從稀薄的空氣中獲取參數 - 它們必須來自路徑解析。如果信息不在請求的URL中,則不能傳遞給方法。
還應當指出的是,你可以通過你的路由覆蓋框架的行爲,請使用備用處理器,而不是MvcRouteHandler
。該框架具有很強的可擴展性,因此您可以在許多地方插入自定義功能。
1
有在控制器,動作和視圖解析,還有ModelBinders發揮相當多的代碼。非常多的是,您最好能夠查看框架的特定部分,並提出更詳細的問題以獲得更多答案。
幸運的是,ASP.NET MVC framework has been open-sourced,所以如果你很好奇它是如何工作的,你可以get the code自己看看。其優秀的代碼閱讀,你一定會學到一些東西。
更重要的是,您應該看看System.Web.Mvc.MvcHandler和System.Web.Mvc.ControllerActionInvoker類,它們應該引導您沿着正確的路徑回答您的問題。
相關問題
- 1. 怎麼樣與ASP.NET MVC的
- 2. 我怎麼弄出KERNELBASE.dll錯誤?
- 3. 怎麼弄resultat MariaDB的
- 4. 怎麼弄導致烏鴉
- 5. asp.net mvc全球化。你怎麼做呢?
- 6. 我怎麼弄出一個數字的倍數python
- 7. 我怎麼能輸出JavaScript來在asp.net MVC3一個看法?
- 8. 用什麼來代替OnActionExecuting? ASP.NET MVC
- 9. asp.net mvc的 - 你怎麼能遍歷的JavaScript
- 10. ASP.net MVC - 來自多個來源的輸出
- 11. 爲什麼這個對象弄出來並被刪除?
- 12. ASP.NET MVC中的NHibernate事務管理 - 應該怎麼做?
- 13. 怎麼辦單選按鈕與asp.net的MVC結合
- 14. ASP.NET MVC:找不出VirtualPath是什麼?
- 15. 我怎麼弄的ID從一個XML文件中的jQuery
- 16. 使用我的模塊腳本怎麼弄的類別頁面
- 17. Hashtable輸出Asp.net MVC
- 18. <html:select>多個值怎麼弄值到行動的形式
- 19. 裏面怎麼使用嵌套foreach循環for循環Asp.Net MVC
- 20. 詞典<TEntity,string>和asp.net mvc怎麼樣?
- 21. asp.net mvc - 我怎麼可以有多個viewmodels綁定到視圖
- 22. asp.net的MVC出局路由
- 23. asp.net + ajax我怎麼能
- 24. 什麼是在ASP.NET MVC的IViewLocationExpander.PopulateValues()()MVC
- 25. 谷歌分析和ASP.NET MVC - 過濾ID出來的URL的
- 26. ASP.NET MVC - 什麼是ViewState的
- 27. Asp.net mvc:從視圖回來
- 28. 「ASP.NET Web表單MVP」來替代「ASP.NET MVC」
- 29. 怎麼弄推orderbykey甲鍵上onvalue聽者火力
- 30. 遞歸C++組合學:不知道怎麼弄才能
從路線或表單字段集合。 – GalacticCowboy 2009-07-25 03:57:00