汤镇宗老婆张丽霞,诗隆婚礼请柬曝光,春春电玩技术网
ASP.NET MVC通过调用代表全局路由表的RouteCollection对象的扩展方法MapRoute进行路由注册。我们来进行一个简单的实例演示。我们依然沿用之前关于获取天气信息的路由模板,看看通过这种方式注册的Route对象针对匹配的请求将返回怎样一个RouteData对象。
我们创建一个空的ASP.NET Web程序,并手动添加“System.Web.Mvc.dll”和“System.Web.WebPages.Razor.dll”的引用。然后添加如下一个页面(Default.aspx),并按照之前的做法以内联的方式直接将RouteData的相关属性显示出来。我们显示的RouteData是通过调用自定义的GetRouteData方法来获取的,而不是当前页面的RouteData属性返回的RouteData对象。
ublic partial class Default : System.Web.UI.Page { private RouteData routeData; public RouteData GetRouteData() { if (null != routeData) { return routeData; } HttpRequest request = new HttpRequest("default.aspx", "https://localhost/0512/3", null); HttpResponse response = new HttpResponse(new StringWriter()); HttpContext context = new HttpContext(request, response); HttpContextBase contextWrapper = new HttpContextWrapper(context); return routeData = RouteTable.Routes.GetRouteData(contextWrapper); } }
具体的路由注册依然定义在添加的Global.asax文件中。如下面的代码所示,我们利用RouteTable的静态属性Routes获取代表全局路由表的RouteCollection对象,然后调用其MapRoute方法注册了一个采用“{areacode}/{days}”作为路由模板的Route对象,并指定了变量的默认值、约束和命名空间列表。由于成功匹配的路由对象必须具有一个名为“controller”的路由变量,我们直接将controller的默认值设置为“home”。
public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { object defaults = new { areacode = "010", days = 2, defaultCity = "BeiJing", defaultDays = 2, controller = "Home" }; object constraints = new { areacode = @"0\d{2,3}", days = @"[1-3]" }; string[] namespaces = new string[] { "Artech.Web.Mvc", "Artech.Web.Mvc.Html" }; RouteTable.Routes.MapRoute("default", "{areacode}/{days}",defaults, constraints, namespaces); } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论