Ich bin mit Asp.net MVC 1 und ich würde wirklich wie meine Controller-Aktionen StronglyTyped anzeigen (Daten) Anrufe verwenden, die Art erzwingen Überprüfung an Kompilierzeit und lassen Sie mich immer noch ASPX-Seiten unter der Standard-View-Engine verwenden. Die ViewPages Ich nenne sind stark typisiert, aber Fehler in der Aufruf der Aktion zu sehen (Daten) kann nicht bei der Kompilierung gefangen werden, da die in Controller-Ansicht (Daten) Methode erstellt wird nicht stark typisiert und überprüfen Sie nicht einmal zu sehen wenn die Seite zum Zeitpunkt der Kompilierung existiert.ASP.NET StrongTyped-Controller-Action View <TView, TModel> (TModel Data)
Ich habe eine Teillösung (Code unten) mit this post implementiert, aber (1) Ich kann die generische View-Funktion nicht den Typ der starken Ansichtsseiten erkennen, es sei denn, ich hinterlasse einen Code für die stark typisierte Ansicht, und (2) Intellisense und Refactoring funktionieren mit dieser Methode nicht richtig, was mich an der Zuverlässigkeit der von mir verwendeten Methode zweifeln lässt.
Frage: Gibt es eine bessere Art und Weise Art Durchsetzung zu erhalten, wenn Ansichten von Aktionen aufrufen?
Alternative: Gibt es eine alternative Methode, bei der meine Aktionsmethode eine Instanz einer Ansichtsseite erstellen kann, einige Eigenschaften direkt festlegen und dann den HTML-Code an die Aktionsantwort rendern kann?
Code: Hier ist die Basisklasse alle von meinem Controller Vererben zu erreichen, was ich bisher:
public class StrongController : Controller
{
protected ActionResult View<TView, TModel>(TModel model)
where TView : ViewPage<TModel>
where TModel : class
{
return View(typeof(TView).Name, model);
}
}
Und hier ist ein Beispiel-Controller im Einsatz: Namespace ExampleMVCApp.Controllers {
public class HomeController : StrongController
{
public ActionResult Index()
{
return View<ExampleMVCApp.Views.Home.Index, ExampleData>(new ExampleData());
}
}
}
Viewpage-Code Hinter Requ ired für Typ Recognition ... Aspx-Header hat nicht funktioniert
namespace ExampleMVCApp.Views.Home
{
public class Issue : System.Web.Mvc.ViewPage<ExampleData>
{
}
}
Ich kann nicht sehen, warum Sie dies tun wollen. Du scheinst ein Problem zu lösen, das nicht existiert. – RichardOD
Die Ansicht erfordert Daten eines bestimmten Typs, und ich würde erwarten, dass das Framework dies erzwingen kann. – Glenn
Vielleicht mache ich mir ein bisschen zu viel Sorgen. Aber ich habe oft andere Leute, die an den ViewPages arbeiten, und das würde die Interaktion mit ihren Views erleichtern. – Glenn