Контроллер как ascx factory - плохая идея? - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь создать что-то вроде фабрики * .ascxs.

Сценарий: я хотел бы визуализировать элементы управления, которые зависят от модели, которые я передал в componentView.Я хотел бы добиться чего-то вроде этого:

    <%@ 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 Ответ

1 голос
/ 13 ноября 2010

Используйте атрибут ChildActionOnly(), чтобы ограничить доступ к своим действиям.

То, что вы пытаетесь сделать, уже встроено в MVC: Html.DisplayFor()

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

...