2009-11-02 5 views
1

Depuis mon action @html.render bloque mes serveurs dev et prod, je dois utiliser partials (merde).Créer une classe de base de contrôleur (partielle)

J'ai essayé de créer la classe public partial controller{} afin que je puisse définir les données nécessaires pour toutes mes vues mais je n'ai pas de chance (tout se casse). Je viens de LAMP cakePHP et j'ai vraiment besoin de simplicité.

Je dois savoir comment créer un contrôleur de base partiel (qui ne remplace pas le contrôleur de base habituel) et comment accéder à plusieurs modèles de la classe.

Merci!

+1

pourquoi ne pas remplacer le contrôleur de base? Créez simplement votre propre contrôleur de base dont héritent tous vos autres contrôleurs. C'est un moyen recommandé de le faire avec ASP.NET MVC. –

+0

A ajouté un commentaire à ma réponse sur ViewData (celui-ci est pour que vous obteniez la notification). Pourtant, je vous suggère de découvrir pourquoi RenderAction plante (demande à SO, trace de l'exception post, etc) car c'est très utile pour le rendu de données orthogonales. – queen3

+0

ViewData ["x"] pour un seul objet ne doit pas renvoyer d'erreurs. RenderAction ne devrait pas planter. Vous n'avez toujours pas montré d'erreur - ni de RenderAction, ni de ViewData ["x"]. Sans cette information, il est presque impossible d'aider. Je suis d'accord que c'est amusant de continuer à essayer la "voie difficile" - c'est-à-dire, mais pourquoi demander ici, alors? Les travaux de renderpartial – queen3

Répondre

3
public class BaseController: Controller 
{ 
    public override OnActionExecuting(...) { ... } 
    public override OnActionExecuted(... context) 
    { 
     if (context.Result is ViewResult) 
      ((ViewResult)context.Result).ViewData["mycommondata"] = data; 
    } 
    ... 
} 

public class MyController1: BaseController 
{ 
} 

I.e. juste dériver de votre nouvelle classe de contrôleur de base.

Cependant, je vous suggère de demander ici pourquoi votre RenderPartial "plante" - car cela peut être un meilleur moyen pour vous, et il ne devrait évidemment pas tomber en panne.

+0

- son rendu (futurs) qui se bloque et j'ai besoin de plusieurs ensembles de données dans mes vues - regardant le modèle de modèle de vue maintenant - mais je manque vraiment cakePHP (j'aurais pu avoir fait ceci maintenant) – rxhector

+0

OK, RenderAction, mais pourquoi et comment ça se bloque? Pourquoi au lieu de résoudre le problème, vous voulez quelque chose de moins adapté au problème? En outre, si vous avez besoin de plusieurs données, pourquoi n'utilisez-vous pas ViewData ["data1"] = data1; ViewData ["data2"] = data2. Et, bien sûr, vous auriez pu le faire déjà; et si je devais écrire dans CakePHP, je dirais "j'aurais pu le faire dans ASP.NET MVC maintenant" ;-). – queen3

+0

J'ai essayé de définir viewdata ['x'] et viewdata ['y'] viewdata ['x'] est un seul objet viewdata ['y'] est une liste je peux passer viewdata ['y'] à un vue partielle mais viewdata singulier ['x'] jette des erreurs Je suis toujours en train de dépanner pourquoi renderaction plante tout - au moins je vais encore - c'est amusant d'apprendre 'à la dure' – rxhector

3

meilleure façon de créer le contrôleur de base

public class Controller : System.Web.Mvc.Controller 
{ 
    public shipsEntities db = new shipsEntities(); 

    public Controller() 
    { 
     ViewData["ships"] = db.ships.ToList(); 
    } 
} 

cette façon le reste des contrôleurs suivent congrès ordinaire

public class MyController : Controller 
Questions connexes