Контроллер как ASCX Factory - плохая идея?
-
09-10-2019 - |
Вопрос
Я пытаюсь создать что-то вроде * .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.
Если этот метод приемлем, как я могу ограничить доступ к такому контроллеру? Я хотел бы использовать этот класс только на стороне сервера и только на страницах AccXS
Решение
Использовать ChildActionOnly()
атрибут, чтобы ограничить доступ к вашим действиям.
То, что вы пытаетесь сделать, уже встроена в MVC: Html.DisplayFor()
Видеть: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc---templates-part--introduction.html.