C# 将值从文本文件打印到文本区域

C# 将值从文本文件打印到文本区域,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,所以我第一次问这个问题是愚蠢的——我真的道歉 因此,我正在读取一个文本文件的内容——它只是一行数字。我试图计算每行的总和,并按降序分别打印出答案 以下是我的控制器中的代码: public void ReadFromText() { Array LogFileData = null; var logFileNameWithPath = Server.MapPath(@"~/Docs/Q1InputFile.txt"); if (Syst

所以我第一次问这个问题是愚蠢的——我真的道歉

因此,我正在读取一个文本文件的内容——它只是一行数字。我试图计算每行的总和,并按降序分别打印出答案

以下是我的控制器中的代码:

 public void ReadFromText()
    {
        Array LogFileData = null;

        var logFileNameWithPath = Server.MapPath(@"~/Docs/Q1InputFile.txt");

        if (System.IO.File.Exists(logFileNameWithPath))
        {
            LogFileData = System.IO.File.ReadAllLines(logFileNameWithPath);

            foreach (var line in LogFileData)
            {
                //code goes here
            }
        }


        ViewBag.logFileContent = LogFileData;


    }
我正在努力将内容从文本文件发送到文本区域,并使用for each来计算每行的总和

以下是视图的代码:

<h2>Question1</h2>

<div class="jumbotron">    
<p class="lead">Please click the button to load the results</p>    
<input type="button" title="LoadAnswer" value="Click me" id ="btn_run") 
onclick="location.href='@Url.Action("ReadFromText", "Question1")'" />   
@if (ViewBag.logFileContent != null) 
{
foreach (string dataLine in ViewBag.logFileContent) 
{
    @dataLine
    <br /> 
    } 
  }   
</div>

@Html.TextArea("ReadFromText", "Question1")

<div>
@Html.ActionLink("Back to Home", "Index", "Home")
</div>
很抱歉,这是一个基本的问题,但我很新,并试图从中学习
请告知

假设您的按钮是html,在客户端的浏览器中,并且文件位于服务器上的解决方案目录中,而不是客户端

我会做以下事情

当按下浏览器中的按钮时,我将向服务器发出ajax调用。 在服务器上,控制器将打开一个指向该文件的文件流,一行一行地或以任何您想要的方式读取这些行,并以json格式发送输出。 当服务器将输出返回到ajax响应时,我将用该响应替换文本区域,或者在需要时附加它。
所有这三个步骤都可以使用测试数据单独完成。我将首先创建一个ajax测试,并在控制器上返回一个数字,然后使用js在文本字段中填充它。完成后,您只需在控制器中使用文件读取功能,并返回文件中的内容或从文件中求和的内容等。

单击按钮进行AJAX调用

示例Ajax代码:

$.ajax({
type : 'POST',
url : '@Url.Action("your controller and actions goes here")',
dataType : 'json',
data : {
    //Send file path if it is dynamic
},
success : function (data) {
    //Logic to format and display your text file data
},
error : function (ex) {}
});
C-服务器端代码:

string text;
var fileStream = new FileStream(@"c:\file.txt",FileMode.Open,FileAccess.Read);
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
{
   text = streamReader.ReadToEnd();
}
将JSON格式的文本发送到客户端,并根据需要显示


参考此链接了解AJAX实现

我知道已经很晚了,但我现在看到了您的问题。 我更喜欢从txt文件中逐行读取,然后创建一个stringBuilder并将其发送到这样的textare元素,希望它对您有所帮助

List<string> linesFromFile= File.ReadAllLines(filePath).ToList();
StringBuilder str = new StringBuilder();
foreach (string item in linesFromFile)
{
     str.AppendLine(item);
}
ViewBag.RobotsTxt = str;

不想卑鄙,但这似乎是一个很难回答的问题。onclick只是用来更改整个页面的javascript。这就是你想要的吗?你还有一个Question1控制器…每个问题都有单独的文件?你有没有尝试过简单的谷歌搜索如何从文本文件中读取值。。实际上有几种不同的方法可以做到这一点。。这并没有那么困难。我会将其设计为QuestionsController文件中的PublicActionResult ReadFromTextint questionID,而不是为每个问题使用单独的控制器。然后,您可以轻松地添加更多问题,而无需更新代码。此外,几乎可以肯定的是,您的代码重复会更少。也可以考虑使用数据库而不是文本文件来存储数据——更容易维护和更灵活。有很多免费的数据库引擎,您可以轻松安装和使用,还有很多关于如何将你的应用程序连接到它们的教程。我有一个5个问题的作业,每个问题都是完全独立的,这就是为什么我想给每个问题一个单独的答案controller@WillemFölscher我不会为每个问题==难闻的代码创建控制器。正如ADyson已经建议的那样,一个带有参数的控制器将非常完美。我可以想象你会有很多重复的代码,除非你对处理过程进行抽象。