This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
ASP.NET 4 Beta 1: WebForms Routing förlängningsmetoder
Sunday, 14 March 2010
När vi lade till WebForm routing till ASP.NET 4 Beta 1, vi inte har en chans att lägga till i ett par metoder som gör arbetet med Routes och Web Forms mycket enklare!
Observera: koden nedan är "liknar den som vi lägger till ASP.NET 4 Beta 2, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* koden kommer att vara av mycket högre kvalitet dock, detta är bara ett prov!
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Web;
5: using System.Web.Routing;
6:
7: public static class RouteExtensions
8: {
9: public static string GetUrlForRoute(this System.Web.UI.Page page, string routeName, RouteValueDictionary parameters)
10: {
11: VirtualPathData vpd= RouteTable.Routes.GetVirtualPath(null, routeName, parameters);
12: return vpd.VirtualPath;
13: }
14: public static string GetUrlForRoute(this System.Web.UI.Page page, RouteValueDictionary parameters)
15: {
16: VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, parameters);
17: return vpd.VirtualPath;
18: }
19:
20: public static void IgnoreRoute(this RouteCollection routes, string url)
21: {
22: routes.IgnoreRoute(url, null);
23: }
24:
25: public static void IgnoreRoute(this RouteCollection routes, string url, object constraints)
26: {
27: if (routes == null)
28: {
29: throw new ArgumentNullException("routes");
30: }
31: if (url == null)
32: {
33: throw new ArgumentNullException("url");
34: }
35: IgnoreRouteInternal internal3 = new IgnoreRouteInternal(url);
36: internal3.Constraints = new RouteValueDictionary(constraints);
37: IgnoreRouteInternal item = internal3;
38: routes.Add(item);
39: }
40:
41: public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile)
42: {
43: return routes.MapRoute(name, url, physicalFile, null, null);
44: }
45:
46: public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults)
47: {
48: return routes.MapRoute(name, url, physicalFile, defaults, null);
49: }
50:
51: public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, string[] namespaces)
52: {
53: return routes.MapRoute(name, url, null, null, namespaces);
54: }
55:
56: public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, object constraints)
57: {
58: return routes.MapRoute(name, url, physicalFile, defaults, constraints, null);
59: }
60:
61: public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, string[] namespaces)
62: {
63: return routes.MapRoute(name, url, physicalFile, defaults, null, namespaces);
64: }
65:
66: public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, object constraints, string[] namespaces)
67: {
68: if (routes == null)
69: {
70: throw new ArgumentNullException("routes");
71: }
72: if (url == null)
73: {
74: throw new ArgumentNullException("url");
75: }
76: if (physicalFile == null)
77: {
78: throw new ArgumentNullException("physicalfile");
79: }
80: Route route2 = new Route(url, new PageRouteHandler(physicalFile));
81: route2.Defaults = new RouteValueDictionary(defaults);
82: route2.Constraints = new RouteValueDictionary(constraints);
83: Route item = route2;
84: if ((namespaces != null) && (namespaces.Length > 0))
85: {
86: item.DataTokens = new RouteValueDictionary();
87: item.DataTokens["Namespaces"] = namespaces;
88: }
89: routes.Add(name, item);
90: return item;
91: }
92:
93: // Nested Types
94: private sealed class IgnoreRouteInternal : Route
95: {
96: // Methods
97: public IgnoreRouteInternal(string url)
98: : base(url, new StopRoutingHandler())
99: {
100: }
101:
102: public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary routeValues)
103: {
104: return null;
105: }
106: }
107: }
108:
Så, hur använder du dessa metoder?
Dessa tillägg lägger till några enkla metoder:
KartaRoute
Stulna skamlöst från MVC. Dessa metoder ger en genväg för att definiera rutter för WebForms.
RouteCollection.KartaRoute(strängnamn, sträng url, sträng fysisktFile);
Till exempel för att kartlägga en enkel rutt kan du nu göra:
RouteTable.Routes.KartaRoute( en produktDetaljerRoute., produkter/ , på ~/ProductDetails.aspx).
Har också ett par varianter som gör det möjligt att definiera standard etc
RouteCollection.KartaRoute(strängnamn, sträng url, sträng fysiskFile, objektstandard);
RouteCollection.KartaRoute(strängnamn, sträng url, sträng fysiskFile, objektstandard, sträng[] namnrymder);
Hämta routeforUrl
Page.GetUrlForRoute(strängruttNamn, RouteValueDiktionära parametrar);
Med hjälp av en specifikt namngiven rutt och RouteValueDictionary som innehåller ett antal parametrar kommer att ge dig tillbaka en sträng som innehåller Url att använda. VERKLIGEN användbar i databundna appar!
t.ex.
<asp:hyperlink ID="HyperLink1" runat="server" NavigateUrl='<%# Page.GetUrlForRoute("ProductDetailsRoute",new RouteValueDictionary( new {productid= Eval("ProductID")}))%>' Text="Details"></asp:hyperlink>
Page.GetUrlForRoute(RouteValueDiktionära parametrar);
Samma sak, men automatchar RouteValueDictionary parametrar mot en rutt
IgnoreraRoute
Tillåter dig att definiera webbadresser som inte bör provas för matcher mot rutter (kan vara användbart för att uppgradera WebForms appar)
RouteCollection.IgnoreraRoute(sträng url);
RouteCollection.IgnoreraRoute(sträng url, objektbegränsningar);