Domanda

Sto cercando di creare qualcosa di simile fabbrica .ascxs *.

Scenario: Vorrei rendere controlli che dipende dal modello, che ho passato a PartialView. Mi piacerebbe realizzare qualcosa di simile a questo:

    <%@ 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);
    }
}

Mi piacerebbe sapere c'è un modo migliore per far fronte a tale situazione. Suppongo che non è il metodo più efficace per pagina web costruire in ASP.MVC 2.

Se questo metodo è accettabile, come posso limitare l'accesso a tale controllore? Vorrei utilizzare questa classe solo sul lato server e solo le pagine ascxs'

È stato utile?

Soluzione

Usa l'attributo ChildActionOnly() per limitare l'accesso alle vostre azioni.

Che cosa si sta cercando di fare è già incorporato al MVC: Html.DisplayFor()

See: http: //bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top