Question

J'utilise Asp.net MVC 1 et je voudrais vraiment que mes actions de contrôleur à utiliser StronglyTyped View (données) les appels qui appliquent la vérification de type à la compilation et me laissent toujours utiliser des pages ASPX sous le moteur d'affichage par défaut. Les ViewPages j'appelle sont fortement typés, mais des erreurs dans l'appel de l'action à voir (les données) ne peuvent pas être pris au moment de la compilation parce que le construit dans la méthode Controller View (données) ne sont pas fortement typé et ne vérifie même pas voir si la page existe au moment de la compilation.

I ai mis en place une solution partielle (code ci-dessous) en utilisant ce message mais (1) Je ne peux pas la fonction générique Voir de reconnaître le type de pages d'affichage fort à moins que je crée un code derrière le point de vue fortement typé et (2) IntelliSense et refactoring ne fonctionnent pas correctement avec cette méthode qui me fait douter de la fiabilité de la méthode que je utilise.

Question: Y at-il une meilleure façon d'obtenir l'application de type lors de l'appel de vues actions?

Alternative: Y at-il une autre méthode où ma méthode d'action peut créer une instance d'un ViewPage, définir certaines propriétés directement et rendre son HTML à la réponse d'action

Code: Voici la classe de base tous mes contrôleurs Hériter de pour obtenir ce que j'ai jusqu'à présent:

 public class StrongController : Controller 
    {

        protected ActionResult View<TView, TModel>(TModel model)
            where TView : ViewPage<TModel>
            where TModel : class
        {
            return View(typeof(TView).Name, model);
        }


    }

Et voici un exemple de contrôleur utilisé:     espace de noms ExampleMVCApp.Controllers     {

    public class HomeController : StrongController 
    {

        public ActionResult Index()
        {
            return View<ExampleMVCApp.Views.Home.Index, ExampleData>(new ExampleData());
        }


    }
}

Code de ViewPage Derrière requis pour le type de reconnaissance ... tête Aspx ne fonctionne pas

namespace ExampleMVCApp.Views.Home
{
    public class Issue : System.Web.Mvc.ViewPage<ExampleData>
    {
    }

}
Était-ce utile?

La solution

Je pense que vous devriez donner les aides T4MVC un spin ( l'une des annonces originales ici ). Cela au moins vous permettre de vous débarrasser du code que vous avez déjà, puisque ces modèles génèrent le code basé sur les vues que vous avez déjà et vous employer ces méthodes « faux » appelle à répondre à vos vues.

Pour avoir vos appels à View être fortement typé pour le modèle spécifique déclaré par votre point de vue, je ne sais pas exactement si ces aides vous aider avec ça (même si je pense qu'ils le font). Toutefois, si elles ne vous ne pouvez pas encore pirater le code T4MVC de le faire vous-même ou entrer en contact avec l'auteur original, David Ebbo , pour suggérer la fonction d'ajout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top