Asp.net mvc 2 控制器作为ascx工厂-坏主意?

Asp.net mvc 2 控制器作为ascx工厂-坏主意?,asp.net-mvc-2,factory-pattern,renderaction,Asp.net Mvc 2,Factory Pattern,Renderaction,我正在尝试创建类似于*.ascxs'工厂的东西 情景: 我想呈现依赖于模型的控件,我已经将其传递给partialView。 我想实现这样的目标: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyAbstractModel>" %> <%= Model.Property1 %> <!-- other more sophisticated displa

我正在尝试创建类似于*.ascxs'工厂的东西

情景: 我想呈现依赖于模型的控件,我已经将其传递给partialView。 我想实现这样的目标:

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyAbstractModel>" %>

    <%= Model.Property1 %>
<!-- other more sophisticated displays on model -->

    <% Html.RenderAction("RenderControl", "Factory", new { model = Model});  %>
我想知道有没有更好的办法来应付这种情况。我认为在ASP.MVC2中构建网页不是最有效的方法


如果此方法可接受,我如何限制对此类控制器的访问?我只想在服务器端和ascxs的页面上使用此类

使用
ChildActionOnly()
属性来限制对操作的访问

您尝试执行的操作已经内置到MVC:
Html.DisplayFor()

见:

public ActionResult RenderControl(object model) {
    if (model.GetType() == typeof(Model1) {
        return RenderPartial("Partial2", model);
    } else {
        return RenderPartial("Partial1", model);
    }
}