2011-01-17 7 views
0

Ich versuche, ein 2-dimensionales Array zu drucken, kann es aber nicht herausfinden.Pass 2-dimensionalen Array durch Ansicht

Mein Controller verwendet diesen Code:

 public ActionResult Test(string str) 
    { 

     DateTimeOffset offset = new DateTimeOffset(DateTime.Now); 
     offset = offset.AddHours(-5); 

     string[,] weekDays = new string[7,2]; 

     for (int i = 0; i < 7; i++) 
     { 
      weekDays[i,0] = String.Format("{0:yyyy-MM-dd:dddd}", offset); //Date 
      weekDays[i,1] = String.Format("{0:dddd}", offset); //Text 
      offset = offset.AddHours(24); 
     } 

     weekDays[0,1] = "Today"; 

     ViewData["weekDays"] = weekDays; 

     return View(); 
    } 

Jetzt wan't ich dieses Angebot an Wochentagen als Dropdown-Liste zu drucken, und ich dachte, das funktionieren würde:

   <% foreach (var item in (string[,])ViewData["weekDays"]) 
       { %> 
       <option value=" <%= item[0] %> "> <%= item[1] %> </option> 
      <% } %> 

Aber das ist nicht In diesem Fall gibt dieser Code nur das erste Zeichen der Zeichenfolge aus.

Also hat jemand einen Vorschlag?

Danke!

/M

Antwort

0

Problem hier ist, dass foreach auf Array String als Element zurück (und kein Array), so Artikel [0] arbeitet als Indexer über Zeichenfolge erste Zeichen zurückzukehren. Verwenden Sie for (oder while) Schleife und das sollte es tun:

<script runat="server"> 

    private string[,] viewData; 

    protected string[,] Data 
    { 
     get 
     { 
      return viewData ?? (viewData = (string[,])ViewData["weekDays"]); 
     } 
    } 

</script> 

<% for (var i=0; i< Data.GetUpperBound(0); i++) 
       { %> 
       <option value=" <%= Data[i][0] %> "> ... 
      <% } %> 
+0

funktioniert gut, danke, aber Sie müssen sich ändern <% = Daten [i] [0]%> „> bis <% = Daten [ i, 0]%> ">. Danke noch einmal! – Mikael