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

Était-ce utile?

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

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