【问题标题】:MVC upload file BeginForm HTTPPOSTMVC 上传文件 BeginForm HTTPPOST
【发布时间】:2014-12-29 09:10:05
【问题描述】:

我正在尝试将 CSV 文件上传到我的控制器以处理数据。

这是在我的 MVC 剃刀视图中:

@using (Html.BeginForm("AddManyDevices", "Home", FormMethod.Post, new {@enctype = "multipart/form-data" }))
{
     <input id="FileUpload" name="FileUpload" type="file" />
     <input id="subButton" type="submit" value="FileUpload" class="btn btn-success" title="Upload File" />
}

这是我在HomeController 中的方法,一种返回视图的方法,一种处理HTTP POST 的方法

[Authorize]
public ActionResult AddManyDevices()
{
   return View();
}

[HttpPost]
public void AddManyDevices(HttpPostedFileBase FileUpload)
{
   StreamReader csvreader = new StreamReader(FileUpload.InputStream);

   while (!csvreader.EndOfStream)
   {
       var line = csvreader.ReadLine();
       var values = line.Split(';');
   }
}

但是,当我上传文件时,没有调用 HTTP POST AddManyDevices,我做错了什么?

【问题讨论】:

  • @Lanorkin,这不一定是真的。 ActionInvoker 将自动从 void 方法返回 EmptyResult
  • 我现在不需要返回值,甚至没有调用该方法。从 void 更改为 ActionResult 并不能解决我的问题。
  • 我在我的应用程序中尝试了您的代码,正在调用您的操作。
  • 当您点击提交按钮时,您在浏览器网络面板(F12 工具)中看到了什么?哪个 URL,哪个 METHOD,哪个状态码,正文?
  • 我认为,enctype = "multipart/form-data" 在这里是必不可少的

标签: c# asp.net-mvc razor file-io


【解决方案1】:

请从@enctype = "multipart/form-data"中删除@符号

并像下面这样使用

@using (Html.BeginForm("AddManyDevices", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 2011-07-16
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多