2016-11-25 25 views
2

Ich versuche, eine Textdatei zu lesen und diese Werte in einem Textbereich zu füllen. Was hier mein Fehler istAsp.net mvc Razor Füllwerte zu Textarea aus Textdatei

@{ 
     var dataFile = Server.MapPath("~/Files/myFile.txt"); 
     var ListFromFile= File.ReadAllLines(dataFile); 
     @Html.TextArea("name", "", ListFromFile) 
    } 
    <textarea> 
     @ListFromFile.ToList(); 
    </textarea> 
+0

Welchen Fehler haben Sie erhalten? –

+0

Es fügt dem Textbereich keine Werte hinzu und es wird im zweiten Textbereich angezeigt System.Collections.Generic.List'1 [System.String]; – Kurkula

Antwort

3

Sie können nicht direkt als Liste TextArea- value.So gesetzt, benötigen Sie einen string zu bauen.

Sie müssen die StringBuilder Klasse für die Verkettung vieler Strings in einer Schleife verwenden.

Bitte versuchen Sie dies:

@{ 
    var dataFile = Server.MapPath("~/Files/myFile.txt"); 
    var ListFromFile= File.ReadAllLines(dataFile); 
    StringBuilder sb = new StringBuilder(); 
    foreach (string line in ListFromFile) 
    { 
     sb.Append(line + "\n"); 
    } 
    var str = new HtmlString(sb.ToString()); 
} 

Dann setzen TextArea- Wert:

<textarea>@Html.Raw(str)</textarea> 

Oder einfach:

<textarea>@str</textarea> 

Eine andere Methode ist String.Join

012 zu verwenden,
@{ 
    var dataFile = Server.MapPath("~/Files/myFile.txt"); 
    var ListFromFile= File.ReadAllLines(dataFile); 
    var str = String.Join("\n", ListFromFile.ToArray()); 
} 
<textarea>@str</textarea> 
1

Ich glaube, das sein kann, was Sie suchen: in der falschen Reihenfolge

@{ 
    var dataFile = Server.MapPath("~/Files/myFile.txt"); 
    var ListFromFile = File.ReadAllText(dataFile); 

} 
@Html.TextArea("name", ListFromFile, new { cols=40, rows=5}) 

es scheint, Sie schaffen die TextArea- zweimal in Ihrer ursprünglichen Code und im Razor Element von Ihnen angegebenen args haben . Ich änderte auch die verwendete File-Methode, so dass nur der String-Inhalt anstelle einer Liste zurückgegeben wird.