从API到MVC

时间:2015-11-26 09:48:44

标签: c# jquery model-view-controller

我有HTML页面,我打电话给web api上传文件。我的客户端代码是:

<input name="file" type="file" id="load-image" />
<script>
...
var data = new FormData();
var files = $("#load-image").get(0).files;
data.append("UploadedImage", files[0]);

var ajaxRequest = $.ajax({
          type: "POST",
          url: "/UploadImage",
          contentType: false,
          processData: false,
          data: data
 });

服务器端代码:

public class FileUploadController : ApiController
{
 [HttpPost]
 public void UploadImage()
 {
   if (HttpContext.Current.Request.Files.AllKeys.Any())...

有效。现在我想在MVC项目中做同样的事情。我的客户端代码相同,但服务器端代码略有不同。

控制器的基类是Controller(不是api控制器),当我尝试这个时:

public class FileUploadController : ApiController
    [HttpPost]
    public void UploadImage()
    {
if (HttpContext.Current.Request.Files.AllKeys.Any())

我收到'System.Web.HttpContextBase'不包含'Current'定义的错误......

我应该在MVC中更改哪些文件上传将与webApi中的相同? 客户端代码是一样的吗?

1 个答案:

答案 0 :(得分:1)

此处有一个相关问题:System.Web.HttpContextBase' does not contain a definition for 'Current' MVC 4 with Elmah Logging

长话短说: Controller有一个自己的HttpContext.Current实现为

public HttpContextBase HttpContext { get; }

因此你应该使用:

System.Web.HttpContext.Current