我如何读取文件? (获取服务器在上下文中不存在错误)
How do I read a file? (Getting a server does not exist in context error)
我在文档中找到了这段代码,它告诉我服务器在上下文中不存在错误(针对 Server.MapPath())。
还有其他读取文件的方法吗?我尝试输入我要读取的文件的绝对路径,但它给出了空指针异常。
谢谢
P.S 我使用的是.net core 3.1
@{
var result = "";
Array userData = null;
char[] delimiterChar = {','};
var dataFile = Server.MapPath("~/App_Data/data.txt");
if (File.Exists(dataFile)) {
userData = File.ReadAllLines(dataFile);
if (userData == null) {
// Empty file.
result = "The file is empty.";
}
}
else {
// File does not exist.
result = "The file does not exist.";
}
}
<!DOCTYPE html>
<html>
<head>
<title>Reading Data from a File</title>
</head>
<body>
<div>
<h1>Reading Data from a File</h1>
@result
@if (result == "") {
<ol>
@foreach (string dataLine in userData) {
<li>
User
<ul>
@foreach (string dataItem in dataLine.Split(delimiterChar)) {
<li>@dataItem</li >
}
</ul>
</li>
}
</ol>
}
</div>
</body>
</html>
如果您使用的是 MVC 项目,为什么不在 Controller 中读取文件,然后通过 Model 传递该文本?
像下面这样的东西?
public IActionResult Index()
{
var result = "";
Array userData = null;
char[] delimiterChar = { ',' };
var dataFile = Server.MapPath("~/App_Data/data.txt");
if (File.Exists(dataFile))
{
userData = File.ReadAllLines(dataFile);
if (userData == null)
{
// Empty file.
result = "The file is empty.";
}
}
else
{
// File does not exist.
result = "The file does not exist.";
}
return View(result);
}
然后 Index.cshtml
@model string
@if (@Model == "") {
.
.
.
}
it is giving me server doesn't exist in context error(for Server.MapPath())
Is there any other way of reading a file?
请注意 Server.MapPath
尚未包含在 ASP.NET 核心中。
要访问文件/App_Data/data.txt
,您可以参考下面的代码片段。
@using Microsoft.AspNetCore.Hosting
@inject IWebHostEnvironment env
@{
var result = "";
Array userData = null;
char[] delimiterChar = { ',' };
var dataFile = System.IO.Path.Combine(env.ContentRootPath, @"App_Data\data.txt");
if (System.IO.File.Exists(dataFile))
{
userData = System.IO.File.ReadAllLines(dataFile);
if (userData == null)
{
// Empty file.
result = "The file is empty.";
}
}
else
{
result = "The file does not exist.";
}
}
您可以从此文档了解更多关于“在 ASP.NET Core 中使用静态文件”的信息:
如果可能,您可以将代码逻辑放在控制器操作方法中,而不是放在 MVC 视图中。
我在文档中找到了这段代码,它告诉我服务器在上下文中不存在错误(针对 Server.MapPath())。 还有其他读取文件的方法吗?我尝试输入我要读取的文件的绝对路径,但它给出了空指针异常。 谢谢 P.S 我使用的是.net core 3.1
@{
var result = "";
Array userData = null;
char[] delimiterChar = {','};
var dataFile = Server.MapPath("~/App_Data/data.txt");
if (File.Exists(dataFile)) {
userData = File.ReadAllLines(dataFile);
if (userData == null) {
// Empty file.
result = "The file is empty.";
}
}
else {
// File does not exist.
result = "The file does not exist.";
}
}
<!DOCTYPE html>
<html>
<head>
<title>Reading Data from a File</title>
</head>
<body>
<div>
<h1>Reading Data from a File</h1>
@result
@if (result == "") {
<ol>
@foreach (string dataLine in userData) {
<li>
User
<ul>
@foreach (string dataItem in dataLine.Split(delimiterChar)) {
<li>@dataItem</li >
}
</ul>
</li>
}
</ol>
}
</div>
</body>
</html>
如果您使用的是 MVC 项目,为什么不在 Controller 中读取文件,然后通过 Model 传递该文本? 像下面这样的东西?
public IActionResult Index()
{
var result = "";
Array userData = null;
char[] delimiterChar = { ',' };
var dataFile = Server.MapPath("~/App_Data/data.txt");
if (File.Exists(dataFile))
{
userData = File.ReadAllLines(dataFile);
if (userData == null)
{
// Empty file.
result = "The file is empty.";
}
}
else
{
// File does not exist.
result = "The file does not exist.";
}
return View(result);
}
然后 Index.cshtml
@model string
@if (@Model == "") {
.
.
.
}
it is giving me server doesn't exist in context error(for Server.MapPath())
Is there any other way of reading a file?
请注意 Server.MapPath
尚未包含在 ASP.NET 核心中。
要访问文件/App_Data/data.txt
,您可以参考下面的代码片段。
@using Microsoft.AspNetCore.Hosting
@inject IWebHostEnvironment env
@{
var result = "";
Array userData = null;
char[] delimiterChar = { ',' };
var dataFile = System.IO.Path.Combine(env.ContentRootPath, @"App_Data\data.txt");
if (System.IO.File.Exists(dataFile))
{
userData = System.IO.File.ReadAllLines(dataFile);
if (userData == null)
{
// Empty file.
result = "The file is empty.";
}
}
else
{
result = "The file does not exist.";
}
}
您可以从此文档了解更多关于“在 ASP.NET Core 中使用静态文件”的信息:
如果可能,您可以将代码逻辑放在控制器操作方法中,而不是放在 MVC 视图中。