Contrôleur comme une usine ascx - mauvaise idée?
-
09-10-2019 - |
Question
Je suis en train de créer quelque chose comme l'usine * .ascxs.
Scénario: Je voudrais rendre les contrôles qui, selon le modèle que je l'ai passé à PartialView. Je voudrais réaliser quelque chose comme ceci:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyAbstractModel>" %>
<%= Model.Property1 %>
<!-- other more sophisticated displays on model -->
<% Html.RenderAction("RenderControl", "Factory", new { model = Model}); %>
FactoryController:
public ActionResult RenderControl(object model) {
if (model.GetType() == typeof(Model1) {
return RenderPartial("Partial2", model);
} else {
return RenderPartial("Partial1", model);
}
}
Je voudrais savoir est-il une meilleure façon de faire face à cette situation. Je suppose que ce n'est pas la méthode la plus efficace pour construire la page Web dans ASP.MVC 2.
Si cette méthode est acceptable, comment restreindre l'accès à un tel contrôleur? Je voudrais utiliser cette classe uniquement sur le côté serveur et uniquement par les pages de ascxs
La solution
Utilisez l'attribut ChildActionOnly()
pour restreindre l'accès à vos actions.
Qu'est-ce que vous essayez de faire est déjà à MVC builtin: Html.DisplayFor()
Voir: http: //bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html