【问题标题】:ASP.NET MVC Displaying multiple partial views inside a folderASP.NET MVC 在文件夹内显示多个部分视图
【发布时间】:2016-02-23 05:26:33
【问题描述】:

我有一个 MVC 应用程序分解为多个区域。 结构是这样的: 区域 > 区域名称 > 视图 > 各种视图文件夹

我需要在这些视图文件夹中添加一个名为 HelpFiles 的文件夹,使结构像这样 区域 > 区域名称 > 视图 > 各种视图文件夹 > 帮助文件

在我的 Layout 页面中,单击它时我有一个图标,它将调用一个控制器方法,该方法将返回 HelpFiles 文件夹中的所有部分视图并将它们显示在一个 div 中。

到目前为止我做了什么: 我已经向 basecontroller 添加了一个方法,如下所示:

   public ActionResult ShowHelpText(string viewName)
        {
            var areaName = ControllerContext.RouteData.DataTokens["area"];
            var folderName = "~"+ areaName + viewName + "HelpFiles/";
            ViewBag.Partials = ????
            return View();
        }

在返回视图中,我的代码是这样的:

@foreach (string partial in ViewBag.Partials)
{
    //Html.RenderPartial(partial);
    @Html.Partial(partial)
}

我的问题是我无法找到从文件夹中获取所有视图的方法。

我意识到这不是理想的方式,帮助文本应该来自数据库等,但是由于与 CMS 服务相关,我们现在只能使用这种结构。

任何帮助或指点将不胜感激。

谢谢

【问题讨论】:

  • 这不是放置帮助文件的最佳位置。将它们放在内容文件夹中。如果不存在,则创建一个名为 Content 的文件夹并放入您的 HelpFiles 子文件夹。
  • 是的,你是对的,这不是执行此操作的理想方式,但这不是留给我的选择。

标签: asp.net-mvc


【解决方案1】:

未经测试的代码,您可能需要进行一些小改动才能使其正常工作。

//Replace the `~/Content/HelpFiles` to the real path.
ViewBag.Partials = Directory.EnumerateFiles(Server.MapPath("~/Content/HelpFiles")).Select(i => Path.GetFileName(i));

查看:

@foreach (string partial in (IEnumerable<string>)ViewBag.Partials)
{
    @Html.Partial(partial)
}

【讨论】:

  • 这就是要走的路。谢谢你。我完成的代码是这样的: ViewBag.Partials = Directory.EnumerateFiles(HostingEnvironment.MapPath(folderName)).Select(i => Path.GetFileName(i)); ViewBag.Path = 文件夹名称; return View("~/areas/common/views/base/showhelptext.cshtml"); @foreach(字符串部分在 (IEnumerable)ViewBag.Partials){ 字符串路径 = ViewBag.Path + 部分; @Html.Partial(路径) }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2019-10-15
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
相关资源
最近更新 更多