Laden...

MVC Route Constraints Zahl oder leer

Erstellt von Grumbler85 vor 12 Jahren Letzter Beitrag vor 12 Jahren 931 Views
G
Grumbler85 Themenstarter:in
538 Beiträge seit 2008
vor 12 Jahren
MVC Route Constraints Zahl oder leer

Hallo,

ich versuche ein Route-Constraint in MVC zu erzeugen, was mir einerseits die gültigen Werte erlaubt und andererseits erlaubt UrlParameter.Optional (oder ähnliches) als Standardwert zu setzen.

Das Constraint soll aussagen "positive Zahl oder leer":


routes.MapRoute(
 "sourceTargetRoute",
 "Acc/{sourceId}/{action}/{targetId}",
  new { controller = "Acc", action = "Details", targetId = UrlParameter.Optional },
  new { sourceId= "[0-9]+", targetId = "[0-9]*"});

Positive Zahl klappt (führende Nullen interessieren mich nicht) - leer klappt aber nicht. - Warum würde ich gerne wissen.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

16.842 Beiträge seit 2008
vor 12 Jahren

Hi,

darf ich fragen, wieso so kompliziert?
Wieso definierst Du den Parameter an der Action nicht einfach als uint?

Generell würde ich einen invaliden Wert aber in der Action fangen, nicht in der RouteTable.
So erhält der Anwender eine gewohnte Ansicht inklusive einer Fehlermeldung, damit er weiß was er falsch gemacht hat, anstatt ihn ins Nirvana zu schicken, weil die Route nicht gefunden wurde.

In Deim Fall wäre das ja auch so: Ob nun das Element mit der ID -500 oder +500 nicht gefunden wird; musst so oder so abfangen.
Generell tendiere ich dazu nur die Eingangsrouten fest zu definieren; da ansonsten der Verwaltungsaufwand viel höher als der eigentliche Nutzen ist. Validierungen gehören meiner Ansicht nach dort hin, wo sie letzten Endes auch eine Rolle spielen - und das ist meist nicht die RouteTable.

Gruß