[ASP.NET]View einer anderen Control anzeigen

OP #5296683
Lesenswert?
• ▲
▼
Hi,

ich steige derzeit etwas ein in das Thema ASP.NET Core 2.0 MVC, mal ein 
bisschen reintasten. Habe ein Videotutorial (Leider noch für Core 1.0) 
dazu gefunden, welches jetzt für den Einstieg ganz praktisch war. Nun 
habe ich eine Webandwendung mit zwei Controllern gebaut.

Nehmen wir mal an, im Projektverzeichnis gibts damit entsprechend:
1
/Controllers/HomeController.cs
2
/Controllers/andereSeiteController.cs
3
/Views/Home/Index.cshtml
4
/Views/andereSeite/Index.cshtml
Beide Views lassen sich bei entsprechender Adresseingabe einwandfrei 
aufrufen. Nun würde ich auf der Home-Seite (Views/Home/Index) gerne 
einen Link unterbringen, der mir dann die Views/andereSeite/Index lädt.
Entsprechend habe ich in der Views/Home/Index einen Link untergebracht:
----------
Leider kann ich dieses HTML-Zeile nicht zitieren, da mir das Forum hier 
Spam erkennt, ich taste mich mal ran:
1
asp-action="AndereSeite">Andere Seite
Ich habe jetzt den ersten Teil des öffenden a-Tags und das komplette 
schließende a-Tag für die Forensoftware weggelassen.
----------

und im Home-Controller (/Controllers/HomeController.cs) eine passende 
Methode:
1
         // GET: Home/andereSeite
2
        public IActionResult andereSeite()
3
        {
4
            return View("Views/andereSeite/Index.cshtml");
5
        }
Wie man sieht, bin ich zumindest schonmal so weit gekommen, dass ich die 
andere View vom AppVerzeichniss aus, inkl. der Erweiterung angeben muss. 
Ich zitiere dazu MS:

> Wenn einen absoluten Pfad, angefangen beim Stamm app verwenden
> (optional beginnend mit "/" oder "~ /"), wird die cshtml
> Erweiterung muss angegeben werden:

https://docs.microsoft.com/de-de/aspnet/core/mvc/views/overview

Dadurch erhalte ich immerhin keinen The View 'xyz' was not found. Fehler 
mehr. Dafür eine NullRefernceException:

> NullReferenceException: Object reference not set to an
> instance of an object.
>
> AspNetCore._Views_andereSeite_Index_cshtml+<ExecuteAsync>
> d__8.MoveNext() in Index.cshtml, line 27

Also wird offensichtlich der Controller für diese View nicht 
instanziert. Wie kriege ich denn den vernünftig(!) gestartet? Der Weg, 
den jetzt aus der angesprochenen Methode im Home-Controller heraus zu 
instanzieren, und dann irgendwie der anderen View mit zugeben, hört sich 
für mich so absurd und Falsch an, dass ich da gar nicht experimentieren 
will.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.