首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC -动态加载部分视图

MVC -动态加载部分视图
EN

Stack Overflow用户
提问于 2009-08-10 13:55:45
回答 2查看 9.5K关注 0票数 2

我试图通过传递我想要的分部视图的路径列表,然后对每个分部视图调用RenderPartial,来动态地将分部视图加载到视图中。这似乎起到了作用。当我试图将模型传递给局部视图时,问题出现了。因为我是动态加载它们的,所以我不能确切地知道为那个特定的局部视图传递哪个模型。我不想填充每个可能的对象,我正在考虑使用反射和每个局部视图的配置查找来动态加载模型。我还在考虑添加一个ActionFilter,它会自动为我填充正确的模型值,但即使是这个实现也必须使用反射。还有没有其他的建议?

关于常规的ASP.NET用户控件,我错过了一个在MVC中看不到的东西。用户控件封装了自己的用于数据检索的逻辑,而在MVC中,主控制器需要知道这一点。这意味着,如果我要为另一个控制器使用局部视图,该控制器也必须知道如何获取该局部视图的模型。我是不是漏掉了什么?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-08-10 14:07:47

如果您想要实现所描述的功能,您可能会对阅读有关Html.RenderAction()的内容感兴趣。这在许多情况下都很有用,但不是“纯粹的”MVC (也许是实用的MVC)。

我有一个类似的情况,我使用部分视图加载不同的搜索屏幕(搜索提交按钮是相同的),只是表单字段不同。

我用下面的方法来做。在通用基类控制器中,我有泛型类型参数,我将其传递给视图模型对象(SearchObject的类型为object)。

代码语言:javascript
复制
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传递给分部视图。

代码语言:javascript
复制
 <% Html.RenderPartial(@"../Search/SearchCriteriaTemplates/" + /*Specific view name*/, Model.SearchObject); %>

然后,分部视图是强类型的,并且知道如何处理强类型的Model。

票数 4
EN

Stack Overflow用户

发布于 2009-08-10 14:31:58

创建一个具有该逻辑并返回Partials as string的助手函数可能会得到相同的结果。并且将具有比RichardOD建议的虚拟函数更多的可移植性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1255038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档