使用HttpPostedFileBase编辑MVC

时间:2014-10-22 21:46:09

标签: c# asp.net-mvc httppostedfilebase

我主要关注本教程:http://cpratt.co/file-uploads-in-asp-net-mvc-with-view-models/

它创建了一个很好的创建视图,允许用户上传图像。

我如何创建一个显示当前图像文件的类似页面(例如当用户在创建视图中选择一个时显示的内容)并仍然允许用户选择不同的图像?

@model ImageViewModel

<form action="" method="post" enctype="multipart/form-data">
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div>
        Name:
        @Html.EditorFor(model => model.Name)
    </div>
    <div>
        Image Upload:
        @Html.TextBoxFor(model => model.ImageUpload, new { type = "file" })
    </div>
    <button type="submit">Edit</button>
</form>



public class ImageViewModel
{
    public string Name { get; set; }
    public HttpPostedFileBase ImageUpload { get; set; }
}

目前,只允许更改名称并上传新图像。我希望它显示当前图像的文件名,但我不知道将信息上传到HttpPostedFileBase属性的方法(数据库当前正在保存来自create的文件名/路径)。

任何想法都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

为ImageViewModel添加一个额外的属性,并将当前文件名绑定到该属性:

public class ImageViewModel
{
    public string Name { get; set; }

    public string FileName { get; set; }

    public HttpPostedFileBase ImageUpload { get; set; }
}

在编辑视图中,只显示FileName属性:

@model ImageViewModel

<form action="" method="post" enctype="multipart/form-data">

    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div>
        Name:
        @Html.EditorFor(model => model.Name)
    </div>
    <div>
        Current uploaded file:
        @Html.DisplayFor(model => model.FileName)
    </div>
    <div>
        Image Upload:
        @Html.TextBoxFor(m => m.ImageUpload, new { type = "file", value = "test" })
    </div>
    <button type="submit">Save</button>

</form>