我在开发 MVC 应用程序期间遇到了一个问题。
我从用于 View 的简单模型开始,例如:
public class MyModel
{
public HttpPostedFileBase[] Files { get; set; }
public string Name { get; set; }
}
我有一个 View (Create.aspx)
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyModel>" %>
...
<form method="post" action="/My/Create" enctype = "multipart/form-data">
<input type="file" name="Files" />
...
<%:Html.TextBoxFor(item=>item.Name) %>
<input type="submit" value="Create" />
</form>
Controller :
public class ActionController: Controller {
public ActionResult Create() {
var myModel = new MyModel();
return View(model);
}
[HttpPost]
public ActionResult Create(MyModel model) {
if(ModelState.isValid) { /* save */ }
}
public ActionResult Edit(int id) {
var myModel = _manager.Get(id);
myModel.Files = /* what to do here ? */
return View(model);
}
[HttpPost]
public ActionResult Edit(MyModel model) {
if(ModelState.isValid) { /* edit */ }
}
}
我的问题:如何创建要发送的 HttpPostedFileBase 对象以查看和显示它们(参见下面的编辑页面)?
这些文件以 nvarchar 形式存储在数据库中,并带有相对路径(作为标签)。
我想保留已保存的文件并仅更改名称字段。
从数据库中我收到一个存储文件路径、文件类型和文件流的对象。
对于编辑 aspx 页面:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyModel>" %>
...
<form method="post" action="/My/Edit" enctype = "multipart/form-data">
<input type="file" name="Files" />
/* display here the files */
...
<%:Html.TextBoxFor(item=>item.Name) %>
<input type="submit" value="Create" />
</form>
最佳答案
您根本无法使用HttpPostedFileBase
来显示您的文件。
正如其描述所述:
用作提供对客户端已上传的各个文件的访问的类的基类。
用于访问正在上传的文件。如果您想显示已上传的文件,则必须使用其他方法,例如使用文件方法。
关于c# - 如何在ASP.NET MVC编辑页面中为HttpPostedFileBase创建输入类型文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043315/