Я использую Asp.net MVC 1, и мне бы очень хотелось, чтобы действия моего контроллера использовали вызовы StronglyTyped View (data), которые обеспечивают проверку типов во время компиляции, и все же позволяют мне использовать страницы aspx в движке представления по умолчанию. ViewPages, которые я вызываю, строго типизированы, но ошибки в вызове действия View (data) не могут быть обнаружены во время компиляции, потому что встроенный метод Controller View (data) не является строго типизированным и даже не проверяет, чтобы видеть если страница существует во время компиляции.
Я реализовал частичное решение (код ниже), используя этот пост , но (1) я не могу заставить функцию общего вида распознавать тип страниц с сильным просмотром если я не создаю код для строго типизированного представления, и (2) Intellisense и рефакторинг не будут работать должным образом с этим методом, что заставляет меня сомневаться в надежности метода, который я использую.
Вопрос:
Есть ли лучший способ получить принудительное приведение типов при вызове Views из действий?
Альтернатива: Есть ли альтернативный метод, в котором мой метод действия может создать экземпляр страницы просмотра, напрямую установить некоторые свойства и затем отобразить его HTML в ответе действия?
Код:
Вот базовый класс, от которого унаследованы все мои контроллеры, чтобы достичь того, что я имею до сих пор:
public class StrongController : Controller
{
protected ActionResult View<TView, TModel>(TModel model)
where TView : ViewPage<TModel>
where TModel : class
{
return View(typeof(TView).Name, model);
}
}
А вот пример используемого контроллера:
namespace ExampleMVCApp.Controllers
{
public class HomeController : StrongController
{
public ActionResult Index()
{
return View<ExampleMVCApp.Views.Home.Index, ExampleData>(new ExampleData());
}
}
}
Код ViewPage, необходимый для распознавания типов ... Не работает заголовок Aspx
namespace ExampleMVCApp.Views.Home
{
public class Issue : System.Web.Mvc.ViewPage<ExampleData>
{
}
}