我正在尝试创建类似* .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中构建网页的最有效方法。
如果此方法可以接受,我如何限制对此类控制器的访问?我想仅在服务器端使用此类,并且仅使用ascxs的页面
答案 0 :(得分:1)
使用ChildActionOnly()
属性限制对您的操作的访问。
您尝试做的事情已内置于MVC:Html.DisplayFor()
请参阅:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html