2016-11-25 90 views
2

我正在嘗試讀取文本文件並在文本區域中填充這些值。什麼是我的錯在這裏Asp.net mvc剃刀從文本文件中填充textarea的值

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

您收到了什麼錯誤? –

+0

這不是將值添加到文本區域,它顯示在第二個文本區域 System.Collections.Generic.List'1 [System.String]; – Kurkula

回答

3

不能直接設置列表作爲textarea的value.So,你需要建立一個string

您必須使用StringBuilder類將多個字符串連接在一起進行循環。

請試試這個:

@{ 
    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()); 
} 

然後設置文本域值:

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

或者乾脆:

<textarea>@str</textarea> 

另一種方法是使用String.Join

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

我認爲這可能是你在找什麼:

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

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

它似乎你在你的原始代碼和剃刀要素創建的文本區域兩次你在錯誤的順序指定的ARGS 。我還更改了正在使用的File方法,以便只返回字符串內容而不是列表。