Archief - Unordered list vanuit databank (MVC3 Razor)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

a143290

Legacy Member
Voor een project voor school moeten we een ASP.NET website bouwen in C# met de Razor Viewengine van MVC3.

De situatie is als volgt:

We hebben een tabel Document:

Code:
ID	parentID	type	naam	

26	NULL		folder	rootfolder
27	26		folder	folder1	
28	27		file	file1	
29	27		file	file2	
30	27		folder	folder2	
31	30		file	file3	
32	27		folder	folder3	
33	32		file	file4

De bedoeling is om een .cshtml view te generen aan de hand van deze tabel die er zo uit ziet:

HTML:
<ul>
<li>rootfolder</li>
<ul>
<li>folder1</li>
<ul>
<li>file1</li>
<li>file2</li>
<li>folder2</li>
<ul>
<li>file3</li>
</ul>
<li>folder3</li>
<ul>
<li>file4</li>
</ul>
</ul>
</ul>
</ul>

We maken verbinding met de SQL server via een .edmx file.

De DocumentController ziet er zo uit (afgekort):

Code:
private readonly DatabaseEntities _Db = new DatabaseEntities();

public ActionResult FilesFolderIndex()
        {
            var filesFolders = (from d in _Db.Document
                               orderby d.parentID, d.ID
                               select d).ToList();
            return View(filesFolders);

        }


De uiteindelijke .cshtml heeft voorlopig enkel dit als code:

Code:
@model IEnumerable<Project.Models.Document>

//TODO: HIER KOMT DE UL

We geraken er maar niet uit hoe we op een simpele manier (dmv een foreach lus van alle items in @model bv?) deze lijst kunnen genereren.

Eeuwige dankbaarheid voor onze redder in nood :p

Fr3aK

Legacy Member
Ik heb ASP.NET al een tijdje niet meer aangeraakt maar zoiets speel je in bijna elke taal op dezelfde manier klaar, met een recursieve functie.
Code:
function buildMenu(fID) {
  query (parentID = fID);
  while (query) {
    print name;
    buildMenu(ID);
  }
}
buildMenu(0);
Zeer ruwe schets van het concept, in jouw geval ga je ook nog rekening moeten houden met folder/file verschil. Vraag me niet hoe je eraan begint in ASP.NET, zou het echt niet weten ;)



PS: Uw voorstelling van een unordered list is semantisch niet correct:
HTML:
<ul>
  <li>Element 1
    <ul>
      <li>Element 2</li>
    </ul>
  </li>
</ul>
is de correcte manier.

a143290

Legacy Member
Een eigen geschreven HtmlHelper die zichzelf recursief oproept bleek de oplossing. Maar echt na UREN lang knoeien met 4 :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan