Controlador como fábrica ascx - mala idea?
-
09-10-2019 - |
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'
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