MVC - 动态加载部分视图

2024-01-06

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

我怀念在 MVC 中看不到的常规 ASP.NET 用户控件的一件事。用户控件封装了自己的数据检索逻辑,而在 MVC 中,主控制器需要了解它。这意味着如果我要为另一个控制器使用部分视图,该控制器还必须知道如何获取该部分视图的模型。我在这里错过了什么吗?谢谢。


如果您希望能够执行您所描述的操作,您可能有兴趣阅读Html.RenderAction() http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/。这在许多情况下很有用,但不是“纯粹的”MVC(也许是实用的 MVC)。

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

我按照以下方式进行。在公共基类控制器中,我有通用类型参数,我将其传递给视图模型对象(SearchObject 是对象类型)。

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); %>

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC - 动态加载部分视图 的相关文章

随机推荐