返回顶部
首页 > 资讯 > 精选 >MVC路由自定义及视图找寻规则的示例分析
  • 945
分享到

MVC路由自定义及视图找寻规则的示例分析

2023-06-17 05:06:16 945人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关mvc路由自定义及视图找寻规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MVC路由自定义相信对于MVC路由的配置大家也都了解过一些,其实,这也不是本章的重点。创建

这篇文章将为大家详细讲解有关mvc路由自定义及视图找寻规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

MVC路由自定义

相信对于MVC路由的配置大家也都了解过一些,其实,这也不是本章的重点。

创建MVC项目的时候,根目录下>>App_Start>>RouteConfig,这个类就是用来配置路由的,开始会有个默认路由。

MVC路由自定义及视图找寻规则的示例分析

简单介绍下:***个参数:路由名称(***),第二个参数url:需要注意的是{controller}、{action}都是相当于占位符。第三个参数则是默认路由了。

场景:当你的控制器需要根据不同功能来分类时,假如需要做不同产品,希望把同一产品的控制器放在一起。可以这样做:

添加一条路由规则:

         public static void ReGISterRoutes(RouteCollection routes)           {               routes.IgnoreRoute("{resource}.axd/{*pathInfo}");               routes.MapRoute(                   name: "Product",                   url: "Product/AboutPrice/{controller}/{action}/{id}",                   defaults: new { controller = "Sale", action = "Index", id = UrlParameter.Optional }               );                 routes.MapRoute(                  name: "Default",                  url: "{controller}/{action}/{id}",                  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }              );          }

注意点:路由规则匹配是从上到下的,优先匹配的路由一定要写在最上面。因为路由匹配成功以后,它就不会继续匹配下去。当然我们创建的控制器目录也得符合才能匹配。

MVC路由自定义及视图找寻规则的示例分析

结果:

MVC路由自定义及视图找寻规则的示例分析

MVC视图找寻规则

在上面那部分即使我们自定义了路由,但是视图创建的位置还是得乖乖放在Views文件夹下,(不然的话,结果肯定是找不到视图)我们同样也希望View位置是可配。

希望控制器返回的视图能在这个目录下:

MVC路由自定义及视图找寻规则的示例分析

①首先,需要写一个类来自定义我们视图的映射规则,这里我就建在App_Start文件夹下,跟其他配置类一起。

 public sealed class MyViewRule:RazorViewEngine       {           public MyViewRule() {                  ViewLocationFORMats = new string[] {                   //我们定义的视图找寻规则,和路由配置一样,它是从上往下匹配,如果两个路径下都有着视图,它会展示***个。                   "~/ProductViews/AboutPrice/{1}/{0}.cshtml",                   //这是默认设置的,觉得用不到可以删掉,{1}表示控制器名称,{0}表示视图名称                   "~/Views/{1}/{0}.cshtml",                  "~/Views/Shared/{0}.cshtml"              };          }      }

②然后,需要在全局Global.asax.cs里面注册我们的规则,代码如下:

  public class MvcApplication : System.WEB.HttpApplication       {           protected void Application_Start()           {               AreaRegistration.RegisterAllAreas();               FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);               RouteConfig.RegisterRoutes(RouteTable.Routes);               BundleConfig.RegisterBundles(BundleTable.Bundles);               //上面是项目创建默认注册的,下面两条:先把原来的规则清空,再把我们设置加上()              ViewEngines.Engines.Clear();              ViewEngines.Engines.Add(new MyViewRule());          }      }

测试结果:

MVC路由自定义及视图找寻规则的示例分析

错误:The view at '~/ProductViews/AboutPrice/Sale/Index.cshtml' must derive from  WebViewPage, or WebViewPage<TModel>.

大概意思是:没有继承这个WebViewPage类,在编译的时候,这个视图页面也是会生成一个类的,解决的办法有两种:

①直接让它继承那个类(@inherits System.Web.Mvc.WebViewPage)

  @{       Layout = null;   }   @inherits System.Web.Mvc.WebViewPage   <!DOCTYPE html>       <html>   <head>       <meta name="viewport" content="width=device-width" />      <title>Index</title>  </head>  <body>      <div> 我视图位置不一样的哦!      </div>  </body>  </html>

当然,上面这个办法,有个不好的地方就是每次添加一个视图就得写一次,视图多的话极不方便。我们还可以通过配置文件让它继承WebViewPage

②添加配置文件(web.config),在pages节点下继承WebViewPage。或者在默认创建Views文件夹下有个Web.config复制到/ProductViews/AboutPrice下。(局部配置文件,就近原则)

<pages pageBaseType="System.Web.Mvc.WebViewPage"> </pages>

结果:

MVC路由自定义及视图找寻规则的示例分析

关于“MVC路由自定义及视图找寻规则的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: MVC路由自定义及视图找寻规则的示例分析

本文链接: https://lsjlt.com/news/287198.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MVC路由自定义及视图找寻规则的示例分析
    这篇文章将为大家详细讲解有关MVC路由自定义及视图找寻规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MVC路由自定义相信对于MVC路由的配置大家也都了解过一些,其实,这也不是本章的重点。创建...
    99+
    2023-06-17
  • WPF自定义路由事件的示例分析
    这篇文章主要为大家展示了“WPF自定义路由事件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“WPF自定义路由事件的示例分析”这篇文章吧。一、声明路由事件变量并注册定义只读的静态变量字段...
    99+
    2023-06-29
  • jQuery中Validate相关参数及常用自定义验证规则的示例分析
    这篇文章将为大家详细讲解有关jQuery中Validate相关参数及常用自定义验证规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Jquery Validat...
    99+
    2024-04-02
  • layui中lay-verify form表单自定义验证规则的示例分析
    这篇文章主要介绍layui中lay-verify form表单自定义验证规则的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!虽然layui的官方文档已经是写的比较详细,但是初...
    99+
    2024-04-02
  • vue-router中命名路由和命名视图的示例分析
    这篇文章给大家分享的是有关vue-router中命名路由和命名视图的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、概述给路由定义不同的名字,根据名字进行匹配给不同的r...
    99+
    2024-04-02
  • HTML5中Video属性及自定义播放器的示例分析
    这篇文章主要介绍了HTML5中Video属性及自定义播放器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 使用方法: &nbs...
    99+
    2024-04-02
  • docker中资源指标API及自定义指标API的示例分析
    这篇文章给大家分享的是有关docker中资源指标API及自定义指标API的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。    以前是用heapster来收集资源指标才能看,现在hea...
    99+
    2023-06-04
  • vue自定义指令directives及其常用钩子函数的示例分析
    这篇文章主要为大家分析了vue自定义指令directives及其常用钩子函数的示例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“vue自定义指令dire...
    99+
    2023-06-28
  • Android TextView显示Html类解析的网页和图片及自定义标签用法示例
    本文实例讲述了Android TextView显示Html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下: Android系统显示HTML网页的最佳控件为Web...
    99+
    2022-06-06
    自定义标签 自定义 HTML 示例 图片 标签 Android
  • Angular.js数据绑定时自动转义html标签及内容的示例分析
    这篇文章主要介绍Angular.js数据绑定时自动转义html标签及内容的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!angularJS在进行数据绑定时默认是以字符串的形式...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作