asp.net webform url 路由 后缀html,通过路由匹配模式在ASP.NET MVC5中实现URL地址的定义和访问...

第1节. 概述

在asp.net mvc 5中利用路由机制可以很好的实现url地址的自定义。最初在学习ASP.NET MVC框架的时候,使用的URL访问时都是默认的路由,使用控制器/操作方法的方式来访问,其实这是一种逻辑URL,这里主要讨论如何将逻辑URL映射到控制器的操作方法上。

第2节. URL

URL又称为统一资源定位符。访问每个web应用程序、ftp等,都会使用一个独立的URL来定位。

一个好的URL应该具有如下特点:

(1). 域名有意义且容易记住。

(2). 一定要简短,越短越好。

(3). 通过域名能够清楚反馈出网站的功能。

(4). 具有永久性,不可修改的。

在我们学习ASP.NET WebForms框架时,所有的URL后缀都是以.aspx结尾的,这样一眼就能看出这是使用ASP.NET Webform框架开发出来的应用程序。并且这个.aspx在每个URL中都存在。但是对于用户来说,还得多输入.aspx来完成访问,如果能将.aspx省略,其不更好。最重要的是这些文件都是存放在物理磁盘上的。

而在ASP.NET MVC 5中,用户访问的URL都是逻辑URL,只是映射到控制器和操作方法上,相对aspx页面,更加灵活。

第3节. 路由概述

在ASP.NET MVC 5 中,所有的访问都是通过路由来实现的,路由就像是火车站上车次表一样,想去的地方可能有多条路径,应该选择最佳路径去访问。具有如下2种用途:

(1). 根据输入的Url地址,匹配传入的URL,并根据路由映射到控制器和操作方法上。

(2). 生成可以访问的URL,用来响应控制器给出的操作。

一、 对比路由和URL重写

URL重写是将一个新的URL地址通过障眼法变成另一个URL地址,这种重写只是换了个URL地址而已,真正访问的地址还是原来的。

而路由则是将URL映射到具体的资源,如控制器中的操作方法,就是一种资源。

二、 路由的定义

ASP.NET MVC 5中的路由定义,其实只是定义一个匹配模式,是一个路由模板,与正则表达式的定义有些类似,每个软件系统都有一套自己的路由模式,而在具体访问时,则是需要与该模式匹配,匹配上了就可访问,否则不能访问。

根据路由匹配模式,再定义出合适的URL地址与之匹配而被访问到。

三、 路由URL

当我们使用Visual Studio 2019 IDE开发工具创建一个ASP.NET MVC5应用程序后,就会自动生成一个Global.asax全局配置文件。该文件主要配置整个项目的全局数据。

dfa1d1ba14081f7934fa45ae760911e9.png

其中有一行代码是用来注册路由的:

//注册路由RouteConfig.RegisterRoutes(RouteTable.Routes);

所注册的路由RouteConfig类在根目录下的App_Start文件夹的RouteConfig.cs文件中:

836dfcefda5e7ac20f1a2e7ac391145e.png

默认就存在一个路由,此路由定义C#代码如下:

routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

对于路由的定义,要写在MapRoute 的url属性中,并且其值使用{}括起来的字符串表示,其中每一个{}就是一个URL参数,并且必须使用一个特定的符号分隔,默认是使用/分隔的,当然也可以使用其它符号分隔。

2343030355455b1d31e98d2a5c27f4ee.png

这里使用了-来分隔路由的URL。现在访问一下:

fb38f21767183aa7b2350aa3194973ae.png

此时我们发现,使用/分隔URL参数是不能访问的,将URL现在改成-分隔,再试着访问一下:

b85f04e4d84cfb210572b51a1560f565.png

此时,奇迹发现了,当将URL中的/改成-后,可以正常访问了,这是因为在路由模式中,匹配到了正确的路径,所以找到了控制器和操作方法,页面就被访问到了。

四、 路由值

在ASP.NET MVC 5框架中要求使用一些特定的参数名称:{Controller}和{action},其中{Controller}模式表示匹配控制器,{action}模式表示匹配操作方法。匹配模式不区分大小写。

例如:{controller}-{action}-{id}

可以匹配URL:Student-Add-100,其中Student是控制器名称,Add是操作方法名称,100是id的参数值。

如果URL需要使用固定的名称开头,则可以使用如下路由URL匹配模式:

"yido-{controller}-{action}-{id}"

此模式表示必须以yido开头,然后才是控制器和操作方法以及参数。

另外,分隔符可以是多个混合使用:"yd/{controller}-{action}-{id}"

注意:{controller}{action}{id}URL模式是不正确的,原因是没有分隔符的路由URL是不正确的,并且并不是所有的符号都能作为路由URL的分隔符。

五、 路由默认值

对于路由的默认值是指并不需要在URL上全部将默认地址写全访问。而是可以省略访问的。

167cd8dc441896902abd6b4f8ebf652c.png

使用defaults属性在MapRoute()中配置路由的默认值,其默认值的配置是一个匿名类。

如果指定默认的控制器是Home,操作访问是Index,id是可选参数。这样对于:/Home/Index/100的访问完全可以使用/来替代:

4ee828bb7466bf106536a85bcfc15077.png

此时,我们在URL地址上是没有看到Home和Index的,只是一个端口号,后面什么也没有了,这就是默认值所起的作用。

六、 路由约束

对于ASP.NET MVC 5中的路由URL模式匹配,是可以使用正则进行约束的。

例如,有此URL地址:/2020/03/21/,在此URL中,最后的年/月/日的值,可以使用路由约束来设置。

context.MapRoute(name: "AreaUser_default",url: "{controller}/{action}/{year}/{month}/{day}",defaults: new { controller = "RegisterUser", action = "Index", year = UrlParameter.Optional, month = UrlParameter.Optional, day = UrlParameter.Optional },constraints: new { year = @"[1-2][0-9]{3}", month = @"(0[1-9]|1[0-2])", day = @"[0-3][0-9]" });

在MapRoute()方法中,使用constraints来指定约束,是一个匿名类:

new { year = @"[1-2][0-9]{3}", month = @"(0[1-9]|1[0-2])", day = @"[0-3][0-9]" }

这样就将year、month、day进行了约束,只能用来表示年月日的值才能是正确的URL值。

551db8f6f1a1881044f0ce1e13fe2d04.png

注意:如果添加了约束,则可选参数就不能省略了,否则出现404错误。

通过以上的学习,我们清楚了路由机制是如何在ASP.NET MVC 5框架中流转的,这样对于整个项目的URL地址规划是有很大帮助的,不至于开发到中途出现修改URL的情况。

举报/反馈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET WebForm 是一种用于构建动态网页的技术框架,可以通过使用它提供的控件和事件模型来开发各种功能丰富的网页应用程序。要实现审批流,可以按照以下步骤进行: 1. 数据库设计:首先,需要设计一个数据库来存储审批流相关的数据。可以创建一个“审批表(Approval)”来存储审批流的信息,例如审批ID、审批标题、申请人、审批状态等。 2. 创建页面:使用ASP.NET WebForm创建一个审批页面。可以通过使用ASP.NET控件,如GridView、Repeater等来展示审批列表或者审批详情。还可以通过Label、TextBox等控件来收集用户输入的审批意见。 3. 编写代码逻辑:在页面的代码文件,可以编写逻辑来处理审批流。可以使用ASP.NET提供的事件模型,例如按钮的Click事件,来触发审批流的处理逻辑。例如,点击“通过”按钮后,可以更新数据库的审批状态,并发送通知邮件给下一个审批人;点击“拒绝”按钮后,可以更新审批状态,并发送通知邮件给申请人。 4. 审批流控制:审批流通常是由多个环节构成的。可以使用ASP.NET WebForm的页面导航控件(如MultiView)来控制审批流程的流转。可以通过编写代码来判断当前审批人是谁,根据审批人的决策来显示不同的页面视图。 5. 审批历史记录:审批流一般需要记录审批的历史记录。可以在数据库创建一个“审批历史记录表(ApprovalHistory)”,用于存储每次审批的详细信息。可以在每次审批流程处理完成后,将相关信息记录到表。 通过以上步骤,就可以在ASP.NET WebForm实现一个基本的审批流。当然,具体的实现方式还取决于实际需求和业务流程,并可以根据具体情况进行定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值