作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何在 Controller 中创建一个方法,只需要输入一些参数,然后在单击表单提交后它就会计算出来?在幕后,它如何找到正确的方法以及如何确定我只需要这些参数?
最佳答案
简而言之:
路由引擎处理 HttpRequest,并检查请求的 URL。当它找到第一个路由匹配时,它会创建一个新的 MvcRouteHandler
实例,并向其传递 RouteValueDictionary 中 URL 的分解标记。
路由的 MvcRouteHandler
接受请求,并尝试实例化 Controller 类实例。按照惯例,它会查找名为“XXXXXXController”的类,其中 X 被路由中的 {controller} 参数替换。
一旦找到 Controller ,它就会调用路由的 {action} 参数给出的适当方法。路由中存在的任何命名参数(例如 {id})都会作为参数传递给该方法。
基本上,ASP.Net MVC“知道”的一切都来自路由信息。它无法凭空推测参数——它们必须来自路由解析。如果请求的 URL 中不存在该信息,则无法将其传递到该方法中。
还应该注意的是,您可以通过使路由使用备用处理程序而不是 MvcRouteHandler
来覆盖框架的行为。该框架具有很强的可扩展性,因此您可以在很多地方插入自定义功能。
关于asp.net - asp.net mvc 是怎么算出来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1181140/
我是一名优秀的程序员,十分优秀!