控制器ascx工厂 - 坏主意?

时间:2010-11-12 18:11:29

标签: asp.net-mvc-2 factory-pattern renderaction

我正在尝试创建类似* .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});  %>

FactoryController:

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

我想知道有没有更好的方法来应对这种情况。我想这不是在ASP.MVC 2中构建网页的最有效方法。

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

1 个答案:

答案 0 :(得分:1)

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

您尝试做的事情已内置于MVC:Html.DisplayFor()

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