0

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

工厂控制器:

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

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

如果这种方法可以接受,我该如何限制对此类控制器的访问?我只想在服务器端使用这个类,并且只能通过 ascxs 的页面

4

1 回答 1

1

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

您正在尝试做的已经内置到 MVC 中:Html.DisplayFor()

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

于 2010-11-13T12:25:05.730 回答