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});  %>

FactoryController:

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

そのような状況に対処するためのより良い方法があるかどうか知りたいです。ASP.MVC2でWebページを作成するのは最も効率的な方法ではないと思います。

この方法が受け入れられる場合、そのようなコントローラーへのアクセスを制限するにはどうすればよいですか?このクラスをサーバー側でのみ、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 に答える