我有一个页面,其中包含标题输入和正文输入的文本区域。
使用这些东西保存文本文件很简单,问题是,如何在标题输入中放置文件之后命名文件?
我试过了:
@{
var result = "";
if (IsPost)
{
var title = Request["title"];
var body = Request["body"];
var filedata = title + "," + body + Environment.NewLine;
var dataFile = Server.MapPath("/App_Data/Request["title"]");
File.WriteAllText(@dataFile, filedata);
result = "Information saved.";
}
}
(注意var title = Request["title"];
表示它从名为“title”的文本输入请求。我想得到的是输入也将是它保存的文件的名称。
但似乎这个区域:
var dataFile = Server.MapPath("/App_Data/Request["title"]");
不正确。
这样做的正确方法是什么?
答案 0 :(得分:1)
几个指针;首先,这种逻辑应该在Controller中,而不是在View中。您的视图应显示有关您的模型的信息,您的控制器会执行操作。
其次,以下应该做的伎俩(在控制器中!):
[HttpPost]
public ActionResult SaveFile(string title, string body)
{
var fileData = title + "," + body + Environment.NewLine;
var fileSavePath = Path.Combine(
Server.MapPath("~/TextFiles"),
title.Replace(" ", "_") + ".txt");
File.WriteAllText(fileSavePath, fileData);
return this.RedirectToAction("SaveSuccessful");
}
值得注意的是:
Server.MapPath("~/TextFiles")
为您提供了存储文件的Web应用程序根目录中TextFiles目录的路径。SaveSuccessful
的操作当然,你需要处理错误和各种其他事情,但希望这会有所帮助。