我怎么能在控制器中创建一个方法,并且只需要输入一些参数,然后在点击一个表单提交之后就会计算出来呢?底下,它是如何找到正确的方法,以及它如何发现我只是想要这些论点?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