Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC文件上载保存所选文件_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc MVC文件上载保存所选文件

Asp.net mvc MVC文件上载保存所选文件,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个带有文件上传控制的表单,它可以正常工作。但是,如果页面上出现其他无效字段,我很难确定在单击提交按钮并从控制器返回模型后如何“保存”所选文件? 每次页面上出现错误时,用户都必须再次浏览该文件。调用控制器上的POST后保存选择的最佳做法是什么 //VIEW @using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })) { <input id="inputbo

我有一个带有文件上传控制的表单,它可以正常工作。但是,如果页面上出现其他无效字段,我很难确定在单击提交按钮并从控制器返回模型后如何“保存”所选文件? 每次页面上出现错误时,用户都必须再次浏览该文件。调用控制器上的POST后保存选择的最佳做法是什么

//VIEW
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
  <input id="inputbox" type="file" name="PageUpload" />
  @Html.TextBoxFor(model => model.otherField1)
  @Html.TextBoxFor(model => model.otherField2)
}

//CONTROLLER
[HttpPost]
public ActionResult Create(MyViewModel view)
{
    try
    { ...
        if (ModelState.IsValid)
        {
            //it is valid save
            return RedirectToAction("Action", "Controller", new { id = view.ModelID });
        }
    }
    catch(Exception e){}
    return View(view);
}
//查看
@使用(Html.BeginForm(null,null,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
@Html.TextBoxFor(model=>model.otherField1)
@Html.TextBoxFor(model=>model.otherField2)
}
//控制器
[HttpPost]
公共操作结果创建(MyViewModel视图)
{
尝试
{ ...
if(ModelState.IsValid)
{
//它是有效的保存
返回RedirectToAction(“操作”,“控制器”,新的{id=view.ModelID});
}
}
捕获(例外e){}
返回视图(视图);
}

返回视图(View)后,我会正确绑定所有其他字段,但不会绑定输入控件。

用户需要重新选择文件的原因是安全措施。您无法设置文件输入的值(如果可以,恶意网站可能会包含数百个带有“C:\password.doc”等的隐藏文件输入,并试图在用户不知道的情况下下载敏感文件)

如果模型无效,则需要在返回视图之前保存文件。在本例中,我使用的视图模型包含一个对象,该对象包含文件显示名称和路径的属性。基本前提是

  • 将文件保存到临时位置
  • 使用文件路径更新视图模型(到临时 位置)和显示名称
  • 返回视图
  • 在视图中,渲染显示名称(以便用户知道哪个文件) 已选择)和
    路径的隐藏输入。A.
    “删除”按钮可与此关联,以防用户更改
    他们想选择一个不同的文件(使用ajax删除)
    (临时文件)
  • 如果发布时模型状态有效,则基于 打开隐藏输入的值,并将文件移动到其永久位置 位置,然后保存模型并重定向

  • 用户需要重新选择文件的原因是安全措施。您无法设置文件输入的值(如果可以,恶意网站可能会包含数百个带有“C:\password.doc”等的隐藏文件输入,并试图在用户不知道的情况下下载敏感文件)

    如果模型无效,则需要在返回视图之前保存文件。在本例中,我使用的视图模型包含一个对象,该对象包含文件显示名称和路径的属性。基本前提是

  • 将文件保存到临时位置
  • 使用文件路径更新视图模型(到临时 位置)和显示名称
  • 返回视图
  • 在视图中,渲染显示名称(以便用户知道哪个文件) 已选择)和
    路径的隐藏输入。A.
    “删除”按钮可与此关联,以防用户更改
    他们想选择一个不同的文件(使用ajax删除)
    (临时文件)
  • 如果发布时模型状态有效,则基于 打开隐藏输入的值,并将文件移动到其永久位置 位置,然后保存模型并重定向

  • 用户需要重新选择文件的原因是安全措施。您无法设置文件输入的值(如果可以,恶意网站可能会包含数百个带有“C:\password.doc”等的隐藏文件输入,并试图在用户不知道的情况下下载敏感文件)

    如果模型无效,则需要在返回视图之前保存文件。在本例中,我使用的视图模型包含一个对象,该对象包含文件显示名称和路径的属性。基本前提是

  • 将文件保存到临时位置
  • 使用文件路径更新视图模型(到临时 位置)和显示名称
  • 返回视图
  • 在视图中,渲染显示名称(以便用户知道哪个文件) 已选择)和
    路径的隐藏输入。A.
    “删除”按钮可与此关联,以防用户更改
    他们想选择一个不同的文件(使用ajax删除)
    (临时文件)
  • 如果发布时模型状态有效,则基于 打开隐藏输入的值,并将文件移动到其永久位置 位置,然后保存模型并重定向

  • 用户需要重新选择文件的原因是安全措施。您无法设置文件输入的值(如果可以,恶意网站可能会包含数百个带有“C:\password.doc”等的隐藏文件输入,并试图在用户不知道的情况下下载敏感文件)

    如果模型无效,则需要在返回视图之前保存文件。在本例中,我使用的视图模型包含一个对象,该对象包含文件显示名称和路径的属性。基本前提是

  • 将文件保存到临时位置
  • 使用文件路径更新视图模型(到临时 位置)和显示名称
  • 返回视图
  • 在视图中,渲染显示名称(以便用户知道哪个文件) 已选择)和
    路径的隐藏输入。A.
    “删除”按钮可与此关联,以防用户更改
    他们想选择一个不同的文件(使用ajax删除)
    (临时文件)
  • 如果发布时模型状态有效,则基于 打开隐藏输入的值,并将文件移动到其永久位置 位置,然后保存模型并重定向

  • 我担心这是由于安全原因,它不会工作。然而,您的解决方案似乎是一个很好的方法。谢谢@stephen mueckeI担心这是因为secu