asp.net - asp.net mvc 是怎么算出来的?

标签 asp.net asp.net-mvc routes asp.net-routing

我如何在 Controller 中创建一个方法,只需要输入一些参数,然后在单击表单提交后它就会计算出来?在幕后,它如何找到正确的方法以及如何确定我只需要这些参数?

最佳答案

简而言之:

  1. 路由引擎处理 HttpRequest,并检查请求的 URL。当它找到第一个路由匹配时,它会创建一个新的 MvcRouteHandler 实例,并向其传递 RouteValueDictionary 中 URL 的分解标记。

  2. 路由的 MvcRouteHandler 接受请求,并尝试实例化 Controller 类实例。按照惯例,它会查找名为“XXXXXXController”的类,其中 X 被路由中的 {controller} 参数替换。

  3. 一旦找到 Controller ,它就会调用路由的 {action} 参数给出的适当方法。路由中存在的任何命名参数(例如 {id})都会作为参数传递给该方法。

基本上,ASP.Net MVC“知道”的一切都来自路由信息。它无法凭空推测参数——它们必须来自路由解析。如果请求的 URL 中不存在该信息,则无法将其传递到该方法中。

还应该注意的是,您可以通过使路由使用备用处理程序而不是 MvcRouteHandler 来覆盖框架的行为。该框架具有很强的可扩展性,因此您可以在很多地方插入自定义功能。

关于asp.net - asp.net mvc 是怎么算出来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1181140/

相关文章:

asp.net - 如何找到控件的默认选项卡索引?

asp.net - 如何在服务器端 asp.net 中跟踪 Google Analytics 事件?

ruby-on-rails-3 - Rails 3 路由范围和/或嵌套

ruby-on-rails - 安装 Active Admin 并收到 ArgumentError

javascript - 使用 Javascript 检查 RadioButtonList 的值

javascript - 从 .ashx 文件调用 Javascript 方法

c# - 如何编写自定义@Html.Control For(o => o.Property)?

c# - 没有尾部斜杠的链接

asp.net - 将 session 信息存储在 ASP.Net Cookie 或 session 状态中?

asp.net-mvc - ASP.NET MVC - 将数组对象作为 Html.ActionLink(...) 中的路由值传递