Frage ASP.NET MVC3 So verweisen Sie Ansichten direkt vom Controller aus


In meinem Controller möchte ich eine andere Ansicht als Standard angeben. So was :

public ActionResult EditSurvey(Int32 id)
    {

        Survey survey = _entities.Surveys.Single(s => s.Id == id);

        return View("Survey",survey);
    }

Aber anstatt die Ansicht als String ("Survey") anzugeben, möchte ich direkt darauf verweisen. Wenn ich den Namen meiner Ansicht später ändern möchte, muss ich diese Zeichenfolge nicht manuell ändern.

Ich suche also so etwas:

public ActionResult EditSurvey(Int32 id)
    {

        Survey survey = _entities.Surveys.Single(s => s.Id == id);

        return View(Views.Admin.Survey,survey);
    }

6
2018-02-24 13:04


Ursprung


Antworten:


Gute Frage, es gibt keine eingebaute Unterstützung wie die View() Methode erwartet eine Zeichenfolge, aber es ist ein Nifty-Tool aufgerufen T4MVC erstellt von David Ebbo das macht genau das.

Die Dokumentation auf Codeplex hat eine manuelle Installationsprozedur, ich würde empfehlen, sie mit NuGet Paketmanager direkt von VS2010 zu bekommen.

Es ist ziemlich einfach, die ganze Sache sind Dateien, die Sie einfach zu Ihrem Projekt hinzufügen können. (T4MVC.tt und T4MVC.settings.t4), jedes Mal, wenn Sie Ihren Code ändern, (1) Klicken Sie mit der rechten Maustaste auf T4MVC.tt und (2) Klicken "Benutzerdefiniertes Tool ausführen".

Was es tut, ist eine Klasse mit Unterklassen, Mitgliedern, Eigenschaften für alle Ihre Controller und Ansichten zu generieren. Was es sogar macht, ist starke Typen für alle deine Inhalte zu erstellen, wie Bilder, CSS, JS usw. (Was ich denke, ist einfach toll)

Beispiele:
Dies

@Html.RenderPartial("DinnerForm");

Wäre:

@Html.RenderPartial(MVC.Dinners.Views.DinnerForm);

Dies:

@Html.ActionLink("Delete Dinner", "Delete", "Dinners", new { id = Model.DinnerID }, null)

Wäre das stattdessen:

@Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID))

Dies :

<img src="/Content/nerd.jpg" />

Wäre das stattdessen:

<img src="@Links.Content.nerd_jpg" />

Sie müssen mit der rechten Maustaste auf die tt Datei und "Run Custom Tool" wie bereits erwähnt, jedes Mal wenn Sie Ihre Ansichten ändern, Controller, wenn Sie dies jedoch automatisieren möchten, Schauen Sie sich Chirpy an was macht das und mehr.

(Hinweis T4MVC hat aspx / mvc2-Beispiele in der Dokumentation, funktioniert aber gut auf MVC3, wie ich es in der Produktion mit einer MVC3 / Razor-App verwende)

Siehe auch T4MVC-Tag auf SO.


9
2018-02-24 13:08