Mvc :通过单击按钮在文本文件中显示数据库中的列表<学生>
本文关键字:数据库 显示 学生 列表 文件 单击 按钮 文本 Mvc | 更新日期: 2023-09-27 18:34:43
我是 mvc 的新手。我有一个有两种方法的控制器。我想将列表返回到文本文件,然后单击按钮。我一直在想办法通过列表到创建报告文件方法,但没有运气。它非常适合字符串生成器对象。
您知道如何在文本文件中显示列表吗?
@Html.ActionLink("Download File", "CreateReportFile");
public FileStreamResult CreateReportFile()
{
//todo: add some data from your database into that string:
var string_with_your_data = string.Empty;
var byteArray = Encoding.ASCII.GetBytes(string_with_your_data);
var stream = new MemoryStream(byteArray);
return File(stream, "text/plain", "Report" + DateTime.Now + ".txt");
}
public List<Student> GetStudents()
{
return new List<Student>()
{
new Student() {firstname="james",lastname="john",emailAddress="james.john@yahoo.com"},
new Student() {firstname="patric",lastname="swayze",emailAddress="patric.swayze@yahoo.com"},
new Student() {firstname="james",lastname="john",emailAddress="james.john@yahoo.com"},
new Student() {firstname="toy",lastname="gas",emailAddress="toy.gas@yahoo.com"}
};
}
如果您尝试将学生列表放入该字符串中,则可以尝试:
public FileStreamResult CreateReportFile()
{
List<Student> students = GetStudents();
StringBuilder sb = new StringBuilder();
foreach (Student s in students)
sb.AppendLine(s.firstname + ", " + s.lastname + ", " + s.emailAddress);
var string_with_your_data = sb.ToString();
var byteArray = Encoding.ASCII.GetBytes(string_with_your_data);
var stream = new MemoryStream(byteArray);
return File(stream, "text/plain", "Report" + DateTime.Now + ".txt");
}
您所要做的就是添加它以使其成为字符串,然后发送数据。
foreach(Student test in GetStudents())
{
string_with_your_data += test.firstname + ", " + test.lastname + ", " + test.emailAddress + "'r'n";
}
如果你问如何将List对象转换为文本,你需要创建一个方法来做到这一点,或者你可以使用序列化程序,但会将其格式化为json或xml。
要在学生对象中自行转换对象,您可以使用如下所示的内容覆盖 ToString:
public override string ToString()
{
return String.Format("firstname={0}, lastname={1}, emailAddress={2}", firstname, lastname, emailAddress);
}
然后,您可以循环浏览列表
string mystring = string.Empty;
foreach(var student in Students)
mystring += student.ToString() + "'n";
只是一些可能让你开始的想法。