2010-04-18 8 views
0

J'ai le contrôle de l'utilisateur, que je rends sur plusieurs vues. je veux montrer viewdata dans la commande usercontrol, mais viewdata doit être rempli dans la méthode de contrôleur, donc j'ai besoin de remplir viewdata sur chaque méthode de contrôleur de chaque vue, où je rends usercontrol. existe-t-il des solutions simples?asp.net mvc usercontrol viewdata

Répondre

2

Avoir un contrôleur pour cette commande comme

MenuController

avec une méthode d'action

RenderMenu() 
{ 
    **do your work to get the data here and preferrably strong type it** 
    return PartialView("NameOfYourAscxFile", yourObject); 
} 

Si vous nommez votre RenderMenu.ascx de contrôle, vous pouvez juste faire

RenderMenu() 
{ 
    **do your work to get the data here and preferrably strong type it** 
    return PartialView(yourObject); 
} 

Ou, peut-être qu'il serait plus logique de le nommer Menu.ascx et d'avoir une méthode Men u like this

Menu() 
{ 
    **do your work to get the data here and preferrably strong type it** 
    Menu myMenuObject = Repository.GetMenu(...); 
    return PartialView(myMenuObject); 
} 

Votre début Menu.ascx ressemblerait à ceci

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<mynamespace.Menu>" %> 

Pour l'utiliser dans une vue que vous le faites comme ceci:

<% Html.RenderAction("Menu", "Menu"); %> 

HTH