ASCXファクトリーとしてのコントローラー - 悪い考え?
-
09-10-2019 - |
質問
*.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
所属していません StackOverflow