2009-08-06 19 views
2

Woher wissen Controller, welche Ansichten zurückgegeben werden sollen? Ich dachte, es wäre nach Namenskonvention, aber ich habe Instanzen gesehen, zum Beispiel in der Nerd-Dinner-Anwendung, wo die Namen nicht übereinstimmen. Wo oder wie sehe ich diese Zuordnung? Vielen Dank.asp.net mvc - Ansichten und Controller

Antwort

6
public class EmployeesController 
{ 
    public ViewResult Index() 
    { 
     return View("CustomerName"); 
    } 
} 

Wird für die Suche:

Views/Employees/CustomerName.aspx 
Views/Employees/CustomerName.ascx 
Views/Shared/CustomerName.aspx 
Views/Shared/CustomerName.ascx 

so ziemlich ist es ..

Wenn Sie gerade Ansicht zurückzukehren(); Ohne einen Namen anzugeben, wurde nach der Ansicht mit demselben Namen wie die Kontrollfunktion gesucht. In diesem Fall Index.aspx

+0

Der Parameter, den Sie an View() übergeben, soll der Name sein, nach dem gesucht wird? Kann ich einem Controller auch sagen, dass er in einem bestimmten Bereich nach einer Ansicht suchen soll? – Crios

+0

Der Parameter ist der Name der Ansicht z.B. CustomerName = Kundenname.aspx. Soweit ich weiß, sind die Locations, in die mvc schaut, hart codiert, aber Sie können sie anpassen, indem Sie eine ViewEngine entwickeln. ViewEngines.Engines.Add (neues MyCusyomViewEngine()); //Global.asax.cs –

+0

Die Standorte sind in der Tat fest mit dem Standard-Viewengine codiert. Und der Parameter ist in der Tat der Name der Ansicht. Es wird als bewährte Methode angesehen, immer den Namen der Ansicht anzugeben, da Sie sie auf diese Weise testen können. –

0

Es basiert auf dem Namen der Aktion im Controller. Hier ist ein Beispiel:

Ich habe einen Controller namens UserController.

Eine meiner Aktionen auf diesem Controller heißt Index.

Wenn ich sage, Rückkehr View();

Es ist in den Ansichten Verzeichnis aussehen wird, im Benutzerordner, für Index.aspx oder Index.ascx

Es wird auch im freigegebenen Ordner suchen.

2

Es gibt drei Möglichkeiten, einen Ansichtsnamen anzugeben.

Durch Konvention

public ActionResult MyAction { 
    return View() 
} 

, die für eine Ansicht mit dem Namen der Aktion Methode aussehen wird, auch bekannt als "MyAction.ascx" oder "MyAction.aspx"

** Von Namen * *

public ActionResult MyAction { 
    return View("MyViewName") 
} 

für eine Ansicht Dies wird sich den Namen "MyViewName.ascx" oder "MyViewName.aspx".

** Von Anwendungspfad **

public ActionResult MyAction { 
    return View("~/AnyFolder/MyViewName.ascx") 
} 

Dieses letzte man nur in diesem einen Ort sucht, der Ort, den Sie angaben.