在ASP.NET MVC 5

时间:2016-03-21 19:22:22

标签: asp.net-mvc-5

我正在ASP.NET MVC 5中的一个项目,有一个上传图像文件的要求,我可以将图像上传到服务器,我面临的是当提交的视图中有错误时我返回在视图上显示一些错误消息的视图模型,以便不再请求用户再次选择图像,视图中的所有表单字段数据都将被填充,除了先前选择的文件不是。请帮助我实现这一目标。

以下是我必须选择图像的代码

@Html.TextBoxFor(model => Model.Logo, null, new { type = "file"})

这是模型字段

   [DataType(DataType.Upload)]
    public HttpPostedFileBase Logo
    {
        get;
        set;
    }

1 个答案:

答案 0 :(得分:2)

出于安全原因,您无法在控制器中设置文件输入的值,因此如果您想避免让用户在返回视图时再次选择文件,则必须先保存文件(可能是临时位置)并向用户显示文件已上载的指示符。例如,您的模型可能包含以下属性

public HttpPostedFileBase Logo { get; set; }
public string LogoFileName { get; set; }
public string LogoPath { get; set; }

并在控制器方法中,保存文件并设置FileName(即model.LogoFileName = Logo.FileName;)和Path属性。然后在视图中,添加条件语句以呈现FileName(如果存在),或者显示文件输入(如果不存在),例如

if(Model.LogoFileName == null)
{
    @Html.TextBoxFor(m => m.Logo, new { type = "file" })
}
else
{
    @DisplayFor(m => m.LogoFileName)
}