2016-02-22 7 views
0

У меня есть приложение MVC, разбитое на несколько областей. структура такова: Areas> AreaName> Вид> различные просмотра папокASP.NET MVC Отображение нескольких частичных представлений внутри папки

Мне нужно добавить папку внутри этих просмотреть папки называемые файлы справки делает структуру, как этого Области> AreaName> Вид> различные просматривать папки> файлы справки

На моей странице макета у меня есть значок, когда он щелкнут, он вызовет метод контроллера, который вернет все частичные виды внутри папки 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 мы застряли в этой структуре на данный момент.

Любая помощь или указатели будут очень благодарны.

Благодаря

+1

Это не самое лучшее место, чтобы положить ваши файлы справки. Поместите их в папку «Содержимое». если не существует, то создайте папку с именем Content и поместите подкаталог HelpFiles. – CodeNotFound

+0

Да, вы правы, это не идеальный способ сделать это, но это не выбор, который остался на мне. – w2olves

ответ

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) 
} 
+0

Это путь. Спасибо. Мой готовый код был таким: ViewBag.Partials = Directory.EnumerateFiles (HostingEnvironment.MapPath (folderName)). Выберите (i => Path.GetFileName (i)); ViewBag.Path = folderName; return View ("~/areas/common/views/base/showhelptext.cshtml"); @foreach (строка частично в (IEnumerable ) ViewBag.Partials) { string path = ViewBag.Path + partial; @ Html.Partial (путь) } – w2olves

Смежные вопросы