控制器作为ASCX工厂 - 坏主意?
-
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}); %>
Factory Controller:
public ActionResult RenderControl(object model) {
if (model.GetType() == typeof(Model1) {
return RenderPartial("Partial2", model);
} else {
return RenderPartial("Partial1", model);
}
}
我想知道是否有更好的方法来应对这种情况。我想这不是在ASP.MVC 2中构建网页的最有效方法。
如果此方法是可以接受的,我该如何限制对该控制器的访问?我想仅在服务器端和ASCXS的页面上使用此类
解决方案
使用 ChildActionOnly()
属性限制访问您的操作。
您正在尝试做的事情已经在MVC上建立: Html.DisplayFor()
看: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-part-1-indroduction.html
不隶属于 StackOverflow