【问题标题】:Display contents of Text File in MVC3 Razor在 MVC3 Razor 中显示文本文件的内容
【发布时间】:2012-08-07 00:06:01
【问题描述】:

我正在尝试在视图中显示文本文件的内容。 到目前为止,我已经能够获得控制器的以下代码:

public ActionResult ShowFile()     
{         
     string filepath = Server.MapPath("\\some unc path\\TextFile1.txt");
     var stream = new StreamReader(filepath);         
     return File(stream.ReadToEnd(), "text/plain");      
} 

我不知道如何继续查看。

请多多指教。

【问题讨论】:

  • 您想只显示文本还是将其作为视图实际处理,以便包含剃刀语法?

标签: file asp.net-mvc-3 razor


【解决方案1】:

好吧,您可以改为return Content,它会将您输入的任何内容直接渲染到响应流中,响应类型为text/plain

那么你甚至不需要视图。

也不要忘记处理资源和异常处理。您不想将stream.ReadToEnd() 放在返回调用中。

这样做:

[HttpGet]
public ActionResult ShowFile() {         
     string filepath = Server.MapPath("\\some unc path\\TextFile1.txt");
     string content = string.Empty;

     try {
        using (var stream = new StreamReader(filepath)) {
          content = stream.ReadToEnd();
        }
     }
     catch (Exception exc) {
       return Content("Uh oh!");
     } 

     return Content(content);
} 

【讨论】:

  • 感谢您的建议,但代码 sn-p 会更有帮助。您还可以发布文件下载代码吗...?
  • 代码 sn-p?那你怎么称呼上面的?不要在所有答案中发表相同的评论,实际查看评论是否与每个答案相关。
  • 如果你想下载文件,然后像你拥有的那样使用返回文件,并且没有视图,只是一个保存文件的对话框。
  • 从文件中获取内容。谢谢。
【解决方案2】:

返回 Content(yourText) 不是文件结果。那是用于文件下载。如果您还想在包含其他数据的视图中设置它,请创建一个视图模型类并将您的文本分配给模型中的属性。

【讨论】:

  • 即:Razor View 需要以下扩展名:aspx、ascx、cshtml 和 vbhtml。我可以添加这些吗?
猜你喜欢
  • 2013-03-20
  • 2012-11-15
  • 2020-03-30
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多