在纯asp.net中,而不是mvc3 +,通过路由调用控制器的方法

时间:2014-03-19 09:45:31

标签: c# jquery .net asp.net-mvc asp.net-mvc-4

我几天前构建了一个.NET MVC4应用程序。 MVC4体验中的路由模块非常优雅,我希望将其中一个功能实现到我自己的现有项目中。

它是纯粹的asp.net 4.0 web项目。

Web应用程序由纯HTML作为视图,许多javascript和jquery插件作为控制器,以及多个Web服务。

它通过Ajax与服务器,数据库和Web服务进行通信。

每当我尝试在Web服务中调用方法时,我都必须使用Ajax,这已经足够了。

但到目前为止,在应用程序中实现路由模块还没有成功。

我创建Global.asax以在开头使用路线功能,如下所示。

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}

并声明RegisterRoutes方法如下。

void RegisterRoutes(RouteCollection routes)
{
    //routes.MapRoute(
    //    name: "loginController",
    //    url: "{controller}/{action}/{id}",
    //    defaults: new { controller = "login", action = "Index", id = UrlParameter.Optional }
        //);

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapPageRoute(
            "loginController",
            "{controller}/{action}/{id}",
            "~/Controller/loginController.cs");
}

并像这样创建和编码loginController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

public class loginController : Controller
{
    public string index(int id)
    {
        return "works fine";
    }
}

并使用此网址" http://localhost:52749/login/index/1 "试一试 然后它会抛出这个错误页面。

'/' 응용 프로그램에 서버 오류가 있습니다.

경로 처리기 'System.Web.Routing.PageRouteHandler'의 GetHttpHandler() 메서드에서 IHttpHandler를 반환하지 않았습니다.

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 

예외 정보: System.InvalidOperationException: 경로 처리기 'System.Web.Routing.PageRouteHandler'의 GetHttpHandler() 메서드에서 IHttpHandler를 반환하지 않았습니다.

소스 오류: 

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.

스택 추적: 


[InvalidOperationException: 경로 처리기 'System.Web.Routing.PageRouteHandler'의 GetHttpHandler() 메서드에서 IHttpHandler를 반환하지 않았습니다.]
   System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +9599531
   System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

我很抱歉用韩语表达了这一点。

在坚果壳中,它说GetHttpHandler() Method didn't return IHttpHandler.

我试图谷歌这个并没有找到线索。

有人可以帮我摆脱这个吗?

1 个答案:

答案 0 :(得分:0)

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "login", action = "index", id = UrlParameter.Optional } // Parameter defaults
            );
                  }
你可以尝试上面的吗?