首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IRouteHandler给出找不到资源的错误

IRouteHandler给出找不到资源的错误
EN

Stack Overflow用户
提问于 2014-11-14 21:32:57
回答 1查看 122关注 0票数 1

我在asp.net MVC项目中有以下IRouteHandler类,用于通过ajax上传文件:

代码语言:javascript
复制
public class UploadHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        HttpHandler httpHandler = new HttpHandler();
        return httpHandler;
    }

    public class HttpHandler : IHttpHandler
    {
        #region IHttpHandler Members
        public bool IsReusable
        {
            get { return false; }
        }

        public void ProcessRequest(HttpContext context)
        {
            if (context.Request.Files.Count > 0)
            {
                HttpFileCollection SelectedFiles = context.Request.Files;
                for (int i = 0; i < SelectedFiles.Count; i++)
                {
                    HttpPostedFile PostedFile = SelectedFiles[i];
                    string FileName = context.Server.MapPath("~/Content/uploads/" + PostedFile.FileName);
                    PostedFile.SaveAs(FileName);
                }
            }

            else
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("Please Select Files");
            }

            context.Response.ContentType = "text/plain";
            context.Response.Write("Files Uploaded Successfully!!");
        }

        #endregion
    }
}

和javascript:

代码语言:javascript
复制
var uploadfiles = $("#upFile").get(0);
        var uploadedfiles = uploadfiles.files;
        var fromdata = new FormData();
        for (var i = 0; i < uploadedfiles.length; i++) {
            fromdata.append(uploadedfiles[i].name, uploadedfiles[i]);
        }
        var choice = {};
        choice.url = "Upload";
        choice.type = "POST";
        choice.data = fromdata;
        choice.contentType = false;
        choice.processData = false;
        choice.success = function (result) {
            for (var i = 0; i < uploadedfiles.length; i++) {
                model.Filename(uploadedfiles[i].name);
            }
            $("#lblWait").hide();
        };
        choice.error = function (err) { alert(err.statusText); };
        $.ajax(choice);

在App_Start/RouteConfig.cs中:

代码语言:javascript
复制
routes.Add(new Route("Upload", new UploadHandler()));

但是ajax只是给出了一个无法找到的资源,所以我假设我的路由出了什么问题,有人能给我指个正确的方向吗?

EN

回答 1

Stack Overflow用户

发布于 2014-11-14 22:41:48

通过使用控制器操作最终使其正常工作,如下所示:

代码语言:javascript
复制
[HttpPost]
    public void UploadFile()
    {
        var context = HttpContext.Current;
        if (context.Request.Files.Count > 0)
        {
            HttpFileCollection SelectedFiles = context.Request.Files;
            for (int i = 0; i < SelectedFiles.Count; i++)
            {
                HttpPostedFile PostedFile = SelectedFiles[i];
                string FileName = context.Server.MapPath("~/Content/uploads/" + PostedFile.FileName);
                PostedFile.SaveAs(FileName);
            }
        }

        else
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Please Select Files");
        }

        context.Response.ContentType = "text/plain";
        context.Response.Write("Files Uploaded Successfully!!");
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26931179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档