質問

*.ascxsの工場のようなものを作成しようとしています。

シナリオ:Modelに依存するコントロールをレンダリングしたいと思います。これは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でWebページを構築するのに最も効率的な方法ではないと思います。

この方法が受け入れられる場合、そのようなコントローラーへのアクセスを制限するにはどうすればよいですか?このクラスはサーバー側でのみ、ASCXSのページでのみ使用したいと思います。

役に立ちましたか?

解決

使用 ChildActionOnly() アクションへのアクセスを制限する属性。

あなたがやろうとしていることは、すでにMVCに組み込まれています: Html.DisplayFor()

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top