Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Kategorien und Verwendung von Routing
Pador
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

Kategorien und Verwendung von Routing

beantworten | zitieren | melden

Hallo :-),

ich habe leider nichts passendes gefunden oder ich verstehe es einfach nicht, deswegen möchte ich hier einmal speziell auf mein Problem eingehen:

Für mein ASP.NET MVC4 Projekt muss es eine Möglichkeit geben (wie bei fast allen Seiten), bestimmte Produkte, bestimmten Kategorien zuordnen zu können.

Ein Beispiel:

Buch -> EDV -> Anfänger: ASP.NET für dummies

Games -> PlayStation 3 -> Action: Doom 3
Games -> XBOX 360 -> Action: Half Life 2

Jetzt habe ich, z.B. bei Action das Problem, dass diese Kategorie zwei Eltern-Kategorien haben kann. Deshalb habe ich mir folgende Tabellen in der SQL-Datenbank gedacht:

Categories
ID | Name | Description

CategorieTree
ID | ParentCategory | SubCategory

also eine n:m Verknüpfung. Somit kann jede Kategorie mehrere Elternkategorien besitzen.

Ist mein Schema der gängige Weg zum Anlegen der Kategorien oder habt ihr bessere Möglichkeiten?

Zusätzlich frage ich mich dann, wie man Kategorien in meinem Fall am besten mit dem Routing abbilden kann. Im Prinzip müssen doch alle Kategorien fest in der RegisterRoutes() Methode vorgegeben werden oder nicht?

Hilfe wäre Klasse, ich habe schon Kopfschmerzen vom vielen hin und her ;-)

Beste Grüße
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.306

beantworten | zitieren | melden

Nein, Routes müssen nicht fest vergeben werden. Du musst nur das Schema definieren. Routes werden in der MSDN gut erklärt. Dann solltest Du das Prinzip gut verstehen (auch im Zusammenhang mit Areas, Controllern und Actions).

Ob Du nun Games -> PS3 -> Name oder PS3 -> Games -> Name als Schema nutzt; das musst Du wissen - beides möglich und sinnvoll.
Bei einer n:m-Verknüpfung gibt es aber eigentlich kein anderen sinnvollen weg als über eine Hilfstabelle - das ist normal (jedenfalls bei relationalen Datenbanken).
private Nachricht | Beiträge des Benutzers
Pador
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Vielen Dank für deine Antwort!

Bei vielen Seiten sehe ich halt immer nur, dass ähnlicher Link verwendet wird:

http://localhost/games/xbox-360/action/doom3-3242

Klar, bei dem Produkt selbst steht eine ID hinter, die ich zur Abfrage verwenden kann. Wie aber funktioniert das für die Kategorien? Fragt man hier wirklich dann den String-Wert ab?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.306

beantworten | zitieren | melden

Ja

Ein Hinweis noch: die meisten Bücher behandelt ASP.NET WebForms und nicht ASP.NET MVC - das sind zwei paar Stiefel.
private Nachricht | Beiträge des Benutzers
serial
myCSharp.de - Member



Dabei seit:
Beiträge: 902

beantworten | zitieren | melden

Hi,

wenn das Schema immer gleich bleibt, kannst du theoretisch eine Route definieren, z.B:


routes.MapRoute(
    "kategorieRoute", // Route name
    "{controller}/{maincategory}/{subcategory}/{subcategory2}", // URL mit parameter
    new { controller = "Games", action = "Find", maincategory= "all", subcategory = "action", subcategory2 = UrlParameter.Optional } 
);

Damit hast du dann einen Controller Games, mit der Methode Find, und diese würde die Kategorien dann als Parameter bekommen.

Wichtig ist hierbei natürlich die reihenfolge der routen, wenn du mehrere hast.

Beispielurl wäre dann:

Games/PS3/Action/Singleplayer --> alle Params
Games/PC/Sport --> Subcategory 2 bleibt leer
Games/XBOX/ --> Subcategory = action
Games/ --> maincategory = all, Subcategory = action

mfg
serial
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von serial am .
private Nachricht | Beiträge des Benutzers