我试图通过传递我想要的分部视图的路径列表,然后对每个分部视图调用RenderPartial,来动态地将分部视图加载到视图中。这似乎起到了作用。当我试图将模型传递给局部视图时,问题出现了。因为我是动态加载它们的,所以我不能确切地知道为那个特定的局部视图传递哪个模型。我不想填充每个可能的对象,我正在考虑使用反射和每个局部视图的配置查找来动态加载模型。我还在考虑添加一个ActionFilter,它会自动为我填充正确的模型值,但即使是这个实现也必须使用反射。还有没有其他的建议?
关于常规的ASP.NET用户控件,我错过了一个在MVC中看不到的东西。用户控件封装了自己的用于数据检索的逻辑,而在MVC中,主控制器需要知道这一点。这意味着,如果我要为另一个控制器使用局部视图,该控制器也必须知道如何获取该局部视图的模型。我是不是漏掉了什么?谢谢。
发布于 2009-08-10 14:07:47
如果您想要实现所描述的功能,您可能会对阅读有关Html.RenderAction()的内容感兴趣。这在许多情况下都很有用,但不是“纯粹的”MVC (也许是实用的MVC)。
我有一个类似的情况,我使用部分视图加载不同的搜索屏幕(搜索提交按钮是相同的),只是表单字段不同。
我用下面的方法来做。在通用基类控制器中,我有泛型类型参数,我将其传递给视图模型对象(SearchObject的类型为object)。
public abstract class SampleController<T> : Controller where T : new()
public virtual ActionResult SearchForDocuments()
{
searchModel.SearchObject = // Create type of T;
// Some more code
return View("SomeView", searchModel);
}然后我有了一个强类型视图,它将SearchObject传递给分部视图。
<% Html.RenderPartial(@"../Search/SearchCriteriaTemplates/" + /*Specific view name*/, Model.SearchObject); %>然后,分部视图是强类型的,并且知道如何处理强类型的Model。
发布于 2009-08-10 14:31:58
创建一个具有该逻辑并返回Partials as string的助手函数可能会得到相同的结果。并且将具有比RichardOD建议的虚拟函数更多的可移植性。
https://stackoverflow.com/questions/1255038
复制相似问题