I am trying to display contents of a text file in a view.
So far I have been able to get the following code for the controller:
public ActionResult ShowFile()
{
string filepath = Server.MapPath("\\some unc path\\TextFile1.txt");
var stream = new StreamReader(filepath);
return File(stream.ReadToEnd(), "text/plain");
}
I do not know how to go ahead with the view.
Kindly advise.
Well, you could return Content
instead, and it will render whatever you put in directly to the response stream, with the response type of text/plain
.
Then you don't even need a View.
Also don't forget about disposing of your resources and exception handling. You don't want to put the stream.ReadToEnd()
in the return call.
Do it like this:
[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);
}
Return Content(yourText) not a file result. That is for file downloads. If you want to set it in a view with other data as well then create a viewmodel class and assign your text to a property in the model.