在 .NET Core 2.2 Razor 页面中写入文本文件时无法获得正确的语法
Unable to Get Syntax Correct for Writing to Text File in .NET Core 2.2 Razor Pages
过去很容易找到包含文本文件的文件夹的路径,然后创建并写入或添加到现有文件。
现在,我无法正确理解语法。
var userData = firstName + "," + lastName +
"," + email + Environment.NewLine;
var dataFile = Server.MapPath("~/App_Data/data.txt");
File.AppendAllText(@dataFile, userData);
result = "Information saved.";
_context.Courses_New.Add(Courses_New);
await _context.SaveChangesAsync();
"File." 带有红色下划线,"Server." 也是如此。
我看过提到添加此代码以获取 "environment" 的示例,但我看到所有的红色提示 HomeController 必须具有 return 值。创建页面是 return 值。
private IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)
{
_env = env;
}
下面的代码位于我的 Razor 页面的顶部,它用完了 return 值。所以无论我将 HomeController 命名为什么,它都会给我一个错误:
private readonly OESAC.Models.MyDbContext _context;
public CreateModel(OESAC.Models.MyDbContext context)
{
_context = context;
}
据说我可以引用_env变量来组合路径。
目标是在创建行任务期间简单地将成功和失败写入文本文件。
如果我正确理解问题,您正在使用 Razor Pages。控制器用于 WebApi 和 MVC,但 Razor 页面不需要。但可以应用相同的原则。只要您需要的其他 类 配置了依赖注入 (DI),您就可以将它们添加到您的页面模型构造函数中。所以修改CreateModel如下:
private readonly OESAC.Models.MyDbContext _context;
private IHostingEnvironment _environment { get; private set; }
public CreateModel(OESAC.Models.MyDbContext context, IHostingEnvironment hostingEnvironment)
{
_context = context;
_environment = hostingEnvironment;
}
然后在 Page 事件中,您可以执行如下操作:
public async Task<IActionResult> OnPostAsync() {
var webRootPath = _environment.WebRootPath;
var dataPath = Path.Combine(webRootPath, "data.txt");
...
}
注意 这将在您的网络根目录中写入一个文件,该文件可能是公开访问的,而不是您想要的。如果您希望记录有关任务内部运行的信息,使用记录器可能是更好的方法(有关详细信息,请参阅 here)
过去很容易找到包含文本文件的文件夹的路径,然后创建并写入或添加到现有文件。
现在,我无法正确理解语法。
var userData = firstName + "," + lastName +
"," + email + Environment.NewLine;
var dataFile = Server.MapPath("~/App_Data/data.txt");
File.AppendAllText(@dataFile, userData);
result = "Information saved.";
_context.Courses_New.Add(Courses_New);
await _context.SaveChangesAsync();
"File." 带有红色下划线,"Server." 也是如此。
我看过提到添加此代码以获取 "environment" 的示例,但我看到所有的红色提示 HomeController 必须具有 return 值。创建页面是 return 值。
private IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)
{
_env = env;
}
下面的代码位于我的 Razor 页面的顶部,它用完了 return 值。所以无论我将 HomeController 命名为什么,它都会给我一个错误:
private readonly OESAC.Models.MyDbContext _context;
public CreateModel(OESAC.Models.MyDbContext context)
{
_context = context;
}
据说我可以引用_env变量来组合路径。 目标是在创建行任务期间简单地将成功和失败写入文本文件。
如果我正确理解问题,您正在使用 Razor Pages。控制器用于 WebApi 和 MVC,但 Razor 页面不需要。但可以应用相同的原则。只要您需要的其他 类 配置了依赖注入 (DI),您就可以将它们添加到您的页面模型构造函数中。所以修改CreateModel如下:
private readonly OESAC.Models.MyDbContext _context;
private IHostingEnvironment _environment { get; private set; }
public CreateModel(OESAC.Models.MyDbContext context, IHostingEnvironment hostingEnvironment)
{
_context = context;
_environment = hostingEnvironment;
}
然后在 Page 事件中,您可以执行如下操作:
public async Task<IActionResult> OnPostAsync() {
var webRootPath = _environment.WebRootPath;
var dataPath = Path.Combine(webRootPath, "data.txt");
...
}
注意 这将在您的网络根目录中写入一个文件,该文件可能是公开访问的,而不是您想要的。如果您希望记录有关任务内部运行的信息,使用记录器可能是更好的方法(有关详细信息,请参阅 here)