Zweimaliges Abrufen des Controllernamens in der URL mit ASP.NET MVC

Zweimaliges Abrufen des Controllernamens in der URL mit ASP.NET MVC

Entschuldigen Sie die Anfängerfrage, aber wie Sie sehen, erscheint der Controllername zweimal in der URL und funktioniert nur, wenn er zweimal in der URL vorkommt: URL

So sieht mein Controller aus: Controller-Aktion

Und hier ist meine Ansicht:

Sicht

Ich weiß, dass es nicht an meinem Routing liegt, denn wenn ich eine andere Ansicht erstelle, funktioniert das Routing einwandfrei. Wenn ich einfachhttp://localhost:50903/Benutzerdann erscheint ein leerer Bildschirm. Ich denke, dass es aufgrund des Try-Catch-Blocks null zurückgibt, aber wenn es die Funktion aufruft, geht es in UserDao folgendermaßen weiter:

Benutzer.Dao

Und dies ist die gespeicherte Prozedur, die aufgerufen wird:

Gespeicherte Prozedur

Bitte helft mir, ich werde verrückt

Antwort1

Haben Sie einen Bereich in Ihrer Anwendung erstellt? Denn wenn Sie einen Bereich erstellt und darin einen Benutzercontroller-Ordner platziert haben, können Sie den Controller-Namen zweimal erhalten. Und wie ich Ihre URL sehen kann, zeigt sie, dass Ihr erster Controller-NameBenutzerist klein geschrieben, weil wir Bereiche beim Erstellen meistens klein schreiben.

Der Name des Benutzercontrollers erscheint zweimal in der URL, da er den Bereichsnamen in der URL enthält, wie unten gezeigt:

routes.MapRoute(
      name: "user_route",
      template: "{area:required}/{controller:required}/{action}/{id?}",
      defaults: new { area = "users", controller = "Users" 
      });

Bereich aus Route entfernen.

routes.MapRoute(
      name: "user_route",
      template: "{controller:required}/{action}/{id?}",
      defaults: new { controller = "Users", action = "Index" 
      });

Dadurch erscheint Ihr Controllername nur einmal in der URL.

Notiz: Dies ist nur sinnvoll, wenn Sie in Ihrer Anwendung einen Bereich erstellt haben. Wenn Sie keinen Bereich erstellt haben, lassen Sie es mich wissen, wir finden eine andere Lösung dafür.

Ich hoffe, das hilft Ihnen weiter.
Danke.

Antwort2

Ich habe herausgefunden, was falsch war. Ich musste den Namen meines Controllers ändern, damit er richtig funktionierte. Meine Anwendung war möglicherweise verwirrt, weil der Controllername mit dem Namen einer Ansicht identisch war.

verwandte Informationen