Forum: PC-Programmierung [ASP.NET]View einer anderen Control anzeigen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias S. (da_user)


Bewertung
0 lesenswert
nicht 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.

von Dieter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Matthias S. schrieb:
> ich steige derzeit etwas ein in das Thema ASP.NET Core 2.0 MVC, mal ein
> bisschen reintasten.

Tu dir selbst einen gefallen und such dir was richtiges. Jetzt am Anfang 
geht das noch leicht.

von Roger S. (edge)


Bewertung
0 lesenswert
nicht lesenswert
In der view mittels:
1
@Url.Action("Index", "andereSeite")

oder
1
@Html.Action("Index", "andereSeite");

Als controller action:
1
return RedirectToAction("Index", "andereSeite");

Cheers, Roger

von Matthias S. (da_user)


Bewertung
0 lesenswert
nicht lesenswert
Funktioniert!
Dankeschön!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.