c# - 如何在ASP.NET MVC编辑页面中为HttpPostedFileBase创建输入类型文件?

标签 c# asp.net-mvc asp.net-mvc-4

我在开发 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/

相关文章:

c# - 调用质询时未应用身份验证属性中传递的 RedirectUri

c# - "Argument data type ntext is invalid for argument 1 of upper function"尝试将第三个项目添加到过滤器时

c# - ASP.NET MVC C# : Bringing in data from multiple tables/queries into a view

c# - 在 Ajax.BeginForm MVC 4 场景中发送异常消息

c# - v6 项目中的 Umbraco 表面 Controller

.net - 我可以使用带有 mvc 4 的代码优先 Entity Framework 将日期时间用作键吗?

javascript - AntiForgeryToken 无法跨同一解决方案的子项目进行验证

c# - 将 json 字符串作为参数传递给 webmethod

asp.net-mvc-4 - Asp.net数据库迁移,Down方法有什么用?

c# - 为什么 mvc "remember"旧模型在 "beginform"内?