données Passing à vue partielle qui est utilisé dans de nombreux endroits peuvent se faire de plusieurs façons:
Créer une classe de modèle de base pour tous vos modèles. Dans la classe de base, définissez la propriété PartialModel qui contiendra le modèle pour la vue partielle (il peut y en avoir beaucoup si l'utilisation a plusieurs vues partielles). Vous pouvez maintenant renseigner la propriété PartialModel dans l'action du contrôleur, mais pour rendre le code plus réutilisable, vous pouvez créer votre propre filtre d'action qui insérera les données de vue partielle juste après l'exécution de la méthode action (mais avant que le modèle ne soit transmis à la vue)
public class PartialViewModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
BaseViewModel model;
if (filterContext.Controller.ViewData.Model == null)
{
model = new BaseViewModel();
filterContext.Controller.ViewData.Model = model;
}
else
{
model = filterContext.Controller.ViewData.Model as BaseViewModel;
}
model.PartialModel = new PartialModel(...) // Partial model initialization
base.OnActionExecuted(filterContext);
}
}
Ensuite, vous pouvez l'utiliser comme:
[PartialViewModel]
public ActionResult Index()
{
//...
}
Une autre option: vous pouvez créer la classe BaseController pour tous vos contrôleurs et créer PartialModel lors de l'initialisation du contrôleur de base. Ensuite, PartialModel peut être stocké dans le dictionnaire ViewData []. Parce que l'utilisation dictionnaire ViewData dans les vues est mauvaise, créer méthode d'extension sur HtmlHelper comme:
public static PartialModel GetPartialModel(this HtmlHelper helper)
{
return helper.viewContext.ViewData["PartialModel"] as PartialModel
}
vous pouvez donc obtaint le modèle de cette façon:
<% Html.RenderPartial("MyPartial", Html.GetPartialModel()); %>
Pourriez-vous donner quelques informations sur les raisons pour lesquelles vous voulez éviter d'utiliser une base de données? C'est probablement la meilleure solution. – tvanfosson