Вопрос

Я пытаюсь создать что-то вроде * .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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top