asp.net mvc如何解决这个问题?

leo*_*ora 5 asp.net asp.net-mvc routing asp.net-routing

我怎么能在控制器中创建一个方法,只是放一些参数,然后在点击表单提交后将其计算出来?在引擎盖下,它如何找到正确的方法,以及它如何确定我只是想要那些参数?

wom*_*omp 8

简而言之:

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

  2. 路由MvcRouteHandler接收请求,并尝试实例化控制器类实例.按照惯例,它会查找名为"XXXXXXController"的类,其中X被路由中的{controller}参数替换.

  3. 一旦找到控制器,它就会调用相应的方法,由路由的{action}参数给出.路径中存在的任何命名参数(例如{id})都作为参数传递给方法.

基本上,ASP.Net MVC"知道"的所有内容都来自路由信息.它无法从稀薄的空气中划分参数 - 它们必须来自路径解析.如果请求的URL中不存在该信息,则无法将其传递给该方法.

还应该注意,您可以通过使路由使用备用处理程序而不是代替来覆盖框架的行为MvcRouteHandler.该框架非常易于扩展,因此您可以在许多方面插入自定义功能.