Heim > Backend-Entwicklung > C#.Net-Tutorial > ASP.NET MVC-Routing-Konfiguration (detaillierte Grafik- und Texterklärung)

ASP.NET MVC-Routing-Konfiguration (detaillierte Grafik- und Texterklärung)

怪我咯
Freigeben: 2017-03-30 11:48:37
Original
1842 Leute haben es durchsucht

Sprechen wir über die grundlegenden Routing--Regelprinzipien. Die grundlegenden Routing-Regeln stammen von Special In der allgemeinen Anordnung stehen die speziellsten (nicht zum Mainstream gehörenden) Regeln am Anfang und die allgemeinsten (Allzweck-)Regeln am Ende. Dies liegt daran, dass die passenden Routing-Regeln ebenfalls in dieser Reihenfolge stehen, also selbst wenn Sie schreiben sie in umgekehrter Reihenfolge. Sie können immer noch auf 404 warten.

XD Lassen Sie uns zunächst über die Struktur der URL sprechen >

ASP.NET MVC-Routing-Konfiguration (detaillierte Grafik- und Texterklärung)

URL-Konstruktion

Benannte Parameterspezifikation + anonym
Objekt

Route erstellen und dann

direkt hinzufügen
Methodenüberladung + anonymes Objekt

Persönlich denke ich, dass das erste einfacher zu verstehen ist , die zweite ist einfacher zu debuggen und die dritte ist effizienter zu schreiben. Dieser Artikel bevorzugt den dritten Typ 🎜> 1. Standard-Routing (
MVC
wird mitgeliefert

2. Statisches URL-Segment


Ohne Platzhalter-Routing ist es fertig Schreiben Sie es beispielsweise so und greifen Sie dann auf http://localhost: Variablen.


3. Das variable URL-Segment (naja, diese Übersetzung verrät meine Intelligenz)



Bild ist nicht gepostet Der Titel wird als DefaultId angezeigt. Beachten Sie, dass der Wert im
Controller

zugewiesen werden muss und in

Ansicht
nicht kompiliert werden kann Zugriff auf /Home/Index, da das dritte Segment (ID) keinen Wert hat, wird dieser Parameter gemäß den Routing-Regeln auf DefaultId gesetzt

Dies ist deutlich zu erkennen indem wir dem Titel mit viewbag einen Wert zuweisenLassen Sie uns noch einmal über die Standardroute sprechen und geben Sie dann die Standardroute zurück. Dies wird als optionales URL-Segment bezeichnet Es gibt keinen solchen Parameter in der Route, die ID ist null
. Laut Originaltext kann dieses optionale URL-Segment verwendet werden, um eine Trennung von Bedenken zu erreichen Nach meinem Verständnis werden die tatsächlichen Parameter vom Benutzer gesendet, und wir definieren lediglich den formalen Parameternamen. Wenn Sie jedoch darauf bestehen, den Parametern Standardwerte zuzuweisen wird empfohlen. Syntaktischer Zucker wird in den Aktionsparameter geschrieben:



5.

Hier sind sowohl die ID als auch das letzte Segment variabel, sodass /Home/Index/dabdafdaf äquivalent zu /Home/Index//abcdefdjldfiaeahfoeiho ist äquivalent zu /Home/Index/All/Delete/Perm/ . ...

6. Namespace-übergreifendes Routing

Das erinnert mich daran, den Namespace anzugeben und die IIS-Website zu öffnen, sonst wird es 404 sein. Das ist sehr untypisch und es ist nicht empfehlenswert, sich damit herumzuschlagen.


Wenn das erste URL-Segment nicht Home ist, wird es schließlich zur Verarbeitung an das zweite übergeben Stellen Sie diese Route auch so ein, dass sie nicht gefunden wird, wenn sie nicht gefunden wird. Lassen Sie einen Ausweg für die folgenden Routen, damit Sie nicht weiter nach unten suchen müssen.

Aber wenn es so geschrieben wird, wird das

Array
in keiner bestimmten Reihenfolge eingestuft. Wenn es mehrere übereinstimmende Routen gibt, wird ein Fehler gemeldet. Dann schlug der Autor eine verbesserte Schreibmethode vor.

7.Regulärer AusdruckMatch-Route

Einschränkung Mehrere URLs 8. Geben Sie die Anforderungsmethode an 9. WebForm unterstützt

für Details, siehe

Verwendung Asp .Net4 neue Funktion Routing erstellt WebForm-Anwendung


oder offizielles MSDN


10. MVC5s RouteAttribute

muss zuerst die Route in der Routenregistrierungsmethode
registrieren


Auf diese Weise ist die Routenfunktion wirksam. Es gibt auch Routing-Einschränkungen, Reihenfolge, Routennamen usw.
Andere umfassen Routenpräfixe und Routenstandardwerte


路由构造


参数限制

tr>



Constraint Description Example
alpha Matches uppercase or lowercase Latin alphabet characters (a-z, A-Z) {x:alpha}
bool Matches a Boolean value. {x:bool}
datetime Matches a DateTime value. {x:datetime}
decimal Matches a decimal value. {x:decimal}
double Matches a 64-bit floating-point value. {x:double}
float Matches a 32-bit floating-point value. {x:float}
guid Matches a GUID value. {x:guid}
int Matches a 32-bit integer value. {x:int}
length Matches a string with the specified length or within a specified range of lengths. {x:length(6)}  {x:length(1,20)}
long Matches a 64-bit integer value. {x:long}
max Matches an integer with a maximum value. {x:max(10)}
maxlength Matches a string with a maximum length. {x:maxlength(10)}
min Matches an integer with a minimum value. {x:min(10)}
minlength Matches a string with a minimum length. {x:minlength(10)}
range Matches an integer within a range of values. {x:range(10,50)}
regex Matches a regular expression. {x:regex(^d{3}-d{3}-d{4}$)}


Einschränkung Beschreibung Beispiel
alpha Entspricht Groß- oder Kleinbuchstaben des lateinischen Alphabets (a-z, A-Z) {x:alpha}
bool Entspricht einem booleschen Wert. {x:bool
datetime Entspricht einem DateTime-Wert. {x:datetime}
decimal Entspricht einem Dezimalwert. {x:decimal}
double Entspricht einem 64-Bit-Gleitkommawert. {x:double}
float Entspricht einem 32-Bit-Gleitkommawert. {x:float}
guid Entspricht einem GUID-Wert. {x:guid}
int td> Entspricht einem 32-Bit-Ganzzahlwert. {x:int}
length Entspricht einer Zeichenfolge mit der angegebenen Länge oder innerhalb eines angegebenen Längenbereichs. {x:length(6)}  {x:length(1,20)}
long Entspricht einem 64-Bit-Ganzzahlwert. {x:long}
max Entspricht einer Ganzzahl mit einem Maximalwert. {x:max(10)
maxlength Entspricht einer Zeichenfolge mit eine maximale Länge. {x:maxlength(10)
min Entspricht einer Ganzzahl mit einem Mindestwert. {x:min(10)
minlength Entspricht einer Zeichenfolge mit einer Mindestlänge. {x:minlength(10)}
range Entspricht einer Ganzzahl innerhalb eines Wertebereichs. {x: range(10,50)
regex Entspricht einem regulären Ausdruck. {x:regex(^d{3 }-d{3}-d{4}$)}

具体的可以参考

Attributrouting in ASP.NET MVC 5种灵活的处理.因为这个action定义好后,我不需要跑到配置那里定义对应的路由规则


11.最后还是不爽的话自己写个类实现法。


12.访问本地文档
比如这个就用来匹配是否是用谷歌浏览器访问网页的.

把这个节点里的preCondition删除,变成浏览网站,以开启 IIS UrlRoutingModule节点

13.直接访问本地资源,绕过了路由系统


文件名还可以用符。

IgnoreRoute – RouteCollection – StopRoutingHandler匹配的话, 后面的规则都无效了。 这也就是默认的路由里面routes.IgnoreRoute("{ resources}.axd/{*pathInfo}");写最前面的原因.


路由测试(在测试项目的基础上,要装moq)


  最后还是再推荐一下Adam Freeman写的apress.pro.asp.net.mvc.4这本书.稍微熟悉MVC的从第二部分开始读好了。前面都是入门(对我来说是扯淡). ,然后标题起个深入解析XXXX,然后净瞎扯淡。最后一千多页的巨著又诞生了.Adam Freeman的风格我就很喜欢, 都是实例写作, 然后还在那边书里面专门写了大量的测试.

  哎没办法啊,技术差距就是这样了。


Das obige ist der detaillierte Inhalt vonASP.NET MVC-Routing-Konfiguration (detaillierte Grafik- und Texterklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage