【问题标题】:Asp.net mvc Razor fill values to textarea from text fileAsp.net mvc Razor 将值从文本文件填充到 textarea
【发布时间】:2016-11-25 20:25:39
【问题描述】:

我正在尝试读取文本文件并将这些值填充到文本区域中。我的错误是什么

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

【问题讨论】:

  • 你收到了什么错误?
  • 它没有向文本区域添加值,而是显示在第二个文本区域 System.Collections.Generic.List`1[System.String];

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

你不能直接将list设置为textarea值。所以,你需要建立一个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值:

<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>

【讨论】:

    【解决方案2】:

    我相信这可能是您正在寻找的:

    @{
      var dataFile = Server.MapPath("~/Files/myFile.txt");
      var ListFromFile = File.ReadAllText(dataFile);
    
    }
    @Html.TextArea("name", ListFromFile, new { cols=40, rows=5})
    

    您似乎在原始代码中创建了两次 TextArea,并且在 Razor 元素中您以错误的顺序指定了 args。我还更改了正在使用的 File 方法,以便只返回字符串内容而不是列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多