Pregunta

Estoy tratando de crear algo así como la fábrica .ascxs *.

Escenario: Me gustaría hacer controles que depende del modelo, que he pasado a PartialView. Me gustaría lograr algo como esto:

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

Me gustaría saber ¿hay alguna forma mejor de hacer frente a tal situación. Supongo que no es el método más eficiente a la página web de construcción en ASP.MVC 2.

Si este método es aceptable, ¿cómo puede i restringir el acceso a tales controlador? Me gustaría utilizar esta clase en el lado del servidor y sólo por páginas ascxs'

¿Fue útil?

Solución

Use the ChildActionOnly() attribute to restrict access to your actions.

What you are trying to do is already builtin to MVC: Html.DisplayFor()

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top