当前位置: 首页 > 编程笔记 >

asp.net-mvc 路由基础

周育
2023-03-14
本文向大家介绍asp.net-mvc 路由基础,包括了asp.net-mvc 路由基础的使用技巧和注意事项,需要的朋友参考一下

示例

当您yourSite/Home/Index通过浏览器请求url时,路由模块会将请求定向到class的Indexaction方法HomeController。如何知道将请求发送到此特定类的特定方法?出现了RouteTable。

每个应用程序都有一个路由表,在其中存储路由模式和有关将请求定向到何处的信息。因此,当您创建mvc应用程序时,已经在路由表中注册了默认路由。您可以在RouteConfig.cs课堂上看到这一点。

public static void RegisterRoutes(RouteCollection routes)
{
   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
   routes.MapRoute("Default", "{controller}/{action}/{id}",
             new { controller = "Home", action = "Index", id =UrlParameter.Optional});
}

您可以看到该条目具有名称和模板。模板是当请求进入时要检查的路由模式。默认模板具有Home作为控制器URL段Index的值和作为操作段的值。这意味着,如果您没有在请求中显式传递控制器名称和操作,它将使用这些默认值。这就是为什么您访问yourSite/Home/Index和获得相同结果的原因yourSite

您可能已经注意到,我们有一个名为id的参数作为路由模式的最后一段。但是在默认值中,我们指定它是可选的。这就是我们不必在尝试输入的url中指定id值的原因。

现在,回到HomeController中的Index操作方法,并向其中添加一个参数

public ActionResult Index(int id)
{
     return View();
}

现在,使用这种方法在Visual Studio中设置断点。运行项目并yourSite/Home/Index/999在浏览器中访问。断点将被击中,您应该可以看到参数999中现在提供了值999 id。

创建第二个路线模式

假设我们要进行设置,以便针对不同的路线模式调用相同的操作方法。我们可以通过在路由表中添加新的路由定义来做到这一点。

public static void RegisterRoutes(RouteCollection routes)
{
   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
   
   // 添加了新的自定义路线定义
   routes.MapRoute("MySpecificRoute",
    "Important/{id}",
    new { controller = "Home", action = "Index", id =UrlParameter.Optional});

   //默认捕获所有普通路由定义
   routes.MapRoute("Default", "{controller}/{action}/{id}",
             new { controller = "Home", action = "Index", id =UrlParameter.Optional});
}

我添加的新定义具有一个模式Important/{id},其中id也是可选的。这意味着当您请求yourSiteName\Important或时yourSiteName\Important\888,它将被发送到HomeController的Index操作。

路径定义注册的顺序

路由注册的顺序很重要。您应该始终在通用默认路由之前注册特定的路由模式。

 类似资料:
  • 本文向大家介绍asp.net-mvc 路由值绑定,包括了asp.net-mvc 路由值绑定的使用技巧和注意事项,需要的朋友参考一下 示例 给定一些默认路由,例如{controller=Home}/{action=Index}/{id?}您是否拥有urlhttps://stackoverflow.com/questions/1558902 这将转到QuestionsController并将值1558

  • 本文向大家介绍asp.net-core 基本路由,包括了asp.net-core 基本路由的使用技巧和注意事项,需要的朋友参考一下 示例 这将匹配的请求/Home/Index,/Home/Index/123并/

  • 我刚开始学习React,在Asp.NETMVC中实现React浏览器路由器在页面之间导航时遇到了困难。 我使用了相同的结构,没有应用反应asp.netMVC,它工作正常。 当我点击链接时,它不会产生任何错误,只是在页面甚至网络活动中没有任何变化。 我用MVC应用的代码如下: --index.js-- --App.js-- --Nav.app.js-- --routingComponent.js--

  • 本文向大家介绍ASP.NET MVC基础,包括了ASP.NET MVC基础的使用技巧和注意事项,需要的朋友参考一下 一、MVC与ASP.NET MVC基础概念 MVC是Model-View-Controller的缩写. MVC将应用程序划分为3大组件:模型\视图\控制器. MVC不是ASP.NET所特有,它只是一种开发理念.java中的struts2也是一种MVC模型. ASP.NET MVC从2

  • 本文向大家介绍asp.net-mvc 在Mvc中添加自定义路由,包括了asp.net-mvc 在Mvc中添加自定义路由的使用技巧和注意事项,需要的朋友参考一下 示例 用户可以添加自定义路由,将URL映射到控制器中的特定操作。这用于搜索引擎优化目的,并使URL可读。            

  • 问题内容: 我正在研究一个新的ASP.NET MVC和AngularJS应用程序,该应用程序旨在作为SPA的集合。我使用MVC区域概念来分隔每个单独的SPA,然后在每个MVC区域内使用AngularJS创建SPA。 由于我是AngularJS的新手,并且无法找到有关结合MVC和AngularJS路由的答案,因此我想在这里发表我的问题,以查看是否可以获得帮助。 我有标准的MVC路由设置,可用于每个M