“ OpenFileDialog”类不包含“ ShowDialog()”和“ FileName”的定义

时间:2018-10-18 12:19:30

标签: c# asp.net-mvc visual-studio

代码 enter image description here

错误列表

enter image description here

IDE::Visual Studio 2015
.NET Framework版本: 4.5.1
项目模板::ASP.NET MVC


注意:

  • 我已经添加了引用“ System.Windows.Forms”以使用OpenFileDialog类
  • 我添加了“使用System.Windows.Forms”(顺便说一句,如果我已经引用了命名空间,这是否有必要?)
  • 我清洗并重建了几次解决方案
  • 我什至关闭并重新打开了整个项目

2 个答案:

答案 0 :(得分:1)

由于使用的是ASP.NET,因此不能使用OpenFileDialog类。它适用于Windows Forms应用程序。

您需要在网页上使用“文件上传”输入来上传文件。 Here is one example来自MSDN,使用FileUpload控件。

使用HTML输入的简单示例:

<input type="file" name="file" />

您还必须在文件后面更新代码。

编辑: 我没有意识到这是针对MVC项目的,而不是针对Web表单的。

由于您没有使用Webforms,因此将无法使用asp:FileUpload控件。但是,在MVC中做到这一点并不难。 Refer to this article以获得完整示例。我摘录了下面的一些文章。

您将采取某种措施来呈现页面并接受控制器上发布的文件:

    [HttpGet]  
    public ActionResult UploadFile()  
    {  
        return View();  
    }  
    [HttpPost]  
    public ActionResult UploadFile(HttpPostedFileBase file)  
    {  
        try  
        {  
            if (file.ContentLength > 0)  
            {  
                string _FileName = Path.GetFileName(file.FileName);  
                string _path = Path.Combine(Server.MapPath("~/UploadedFiles"), _FileName);  
                file.SaveAs(_path);  
            }  
            ViewBag.Message = "File Uploaded Successfully!!";  
            return View();  
        }  
        catch  
        {  
            ViewBag.Message = "File upload failed!!";  
            return View();  
        }  
    }

在您看来,您将有一个表格来上传和提交文件:

@using(Html.BeginForm("UploadFile","Upload", FormMethod.Post, new { enctype="multipart/form-data"}))  
{         
    <div>  
        @Html.TextBox("file", "", new {  type= "file"}) <br />       
        <input type="submit" value="Upload" />      
        @ViewBag.Message        
    </div>                  
}  

答案 1 :(得分:0)

您不能使用OpenFileDialog,因为MVC不允许使用,所以您要做的就是使用

<input type="file"/>

在前端

编辑:更加清楚一点,以为您尝试在作为客户端的计算机上运行OpenFileDialog命令,通常在Web中,您不能使用这种方法

此处有更详细的说明OpenFileDialog in cshtml