2010-01-08 8 views
21

Welchen Code fügt Visual Studio hinzu (und wo wird es eingefügt?), Wenn Sie mit der rechten Maustaste auf die Controller-Methode klicken, um eine Verknüpfung zur Ansicht herzustellen?Wie verbindet ASP.NET MVC Ansichten und Controller?

Wie kann man dies (Link der Controller & Ansicht) ohne Visual Studio?

+0

Die Antwort, die Sie akzeptiert, während sehr gut und informativ, beantworten Ihre Frage nicht, so dass Sie es nicht als angenommen markieren sollte. Rajeeshs Antwort ist vielleicht eine bessere zu akzeptieren. – Matt

Antwort

27

Es ist alles durch Vereinbarung. Sie platzieren Ihre Ansichten im Ordner Views/ControllerName für jeden Controller. Dies ist der Standardspeicherort für das Framework, nach dem gesucht werden soll. Aber es ist in keiner Weise ein Muss.

Wenn in Ihrem Controller schreiben Sie

return View(); 

Rahmen vorausgesetzt, dass Sie die Ansicht mit dem gleichen Namen wie Aktionsnamen wollen und sucht es in Ansichten/Controller/Ordner. Dann Ansichten/geteilt.

Aber in Ihre Aktionen können Sie

return View("ViewName"); 

Rahmen schreiben für eine Ansicht namens „Viewname“ dann in gleichen Ordner suchen.

Der Standardname für eine Ansicht wäre also der Name der ausgeführten Aktion. Und das ist eine Konvention.

1

Visual Studio erstellt einen Ordner (falls noch nicht vorhanden) unter ~/Views/{YourControllerName} und stellt Ihre Ansicht dort ein. Wenn es dort nicht gefunden wird, wird es im Ordner ~/Views/Shared angezeigt. Wenn Sie eine Ansicht manuell erstellen möchten, müssen Sie Ihre Seite einem dieser Ordner hinzufügen, vorzugsweise dem Ordner ~/Views/{YourControllerName}. Schlagen Sie das NerdDinner-Tutorial auf, um dies in Aktion zu sehen.

http://nerddinnerbook.s3.amazonaws.com/Intro.htm

+0

Ja, ich habe den Ordner gefunden, und ich habe diese Dateien gesehen, aber ich möchte wissen, wo der Link (falls vorhanden) zwischen der aspx-Datei und der controler-Methode liegt. Mi Endziel ist nicht von diesem VS-Assistenten abhängig –

1

Visual Studio verwendet Vorlagen die Standardansichten zu erstellen. Die Vorlagen befinden sich in dem Ordner [Visual Studio-Installationsverzeichnis] ​​\ Common7 \ IDE \ ItemTemplates [CSharp | VisualBasic] \ Web \ MVC \ CodeTemplates Ordner.

Wenn Sie eine MVC .ASPX Seite manuell erstellen möchten, müssen Sie einfach eine leere Seite erstellen und eine Page-Direktive mit den folgenden Attributen bieten:

  • Language („C#“ oder „VB“)
  • Masterpagefile (Standard ist ~/Views/Shared/Site.Master)
  • Erbt (für stark typisierte Modelle verwenden View < ModelClassName>, andernfalls View)

Beispiel:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<ListCompanyManagerDetailsViewModel>" %> 

Für Benutzersteuerungen (ASCX), gelten die gleichen Regeln, außer der Masterpagefile-Attribut nicht verwendet wird und Sie erben von Viewusercontrol.

Beispiel:

<%@ Control Language="C#" Inherits="ViewUserControl<Contact>" %> 

P. S. Der Grund, dass Namespaces keinem meiner Klassennamen vorangehen, liegt daran, dass ich sie im Abschnitt meiner web.config deklariert habe.

4

Standardmäßig asp.net MVC verwendet FormViewEngine, die eine Implementierung von IViewEngine ist. IViewEngine hat zwei Methoden namens "FindView" und "FindPartialView", die die Ansichtsdatei aus dem "Views/Controller /" - Ordner findet.

Danke,
Rajeesh