在一个项目中使用Web表单和MVC进行路由

时间:2017-01-27 15:24:00

标签: asp.net-mvc web-applications webforms asp.net-mvc-routing web-site-project

我试图将旧网站项目转换为网络应用程序。我设法设置了项目并复制了文件并设置了参考资料以及所有这些。我遇到的问题是路由现在完全改变了,而不是:

../quotes/Transmittals.aspx

我明白了:

../quotes/Transmittals

这很棒,我喜欢它。但是在旧的网站项目中,所有的ajax调用都设置了这些类型的路由:

$.ajax({
    type: "POST",
    url: "/quotes/Transmittals.aspx/GetContractTypes",
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function (data) {   
    ...            
    },
    error: function (xhr, ajaxOptions, thrownError) {                
    ...
    }
});

在.aspx页面后面的代码中:

 <System.Web.Services.WebMethod>
    Public Shared Function GetContractTypes() As String
        Using _Repo As New Repository
            Return ServiceCallResult.SendJSONResult(_Repo.GetContractTypesByLogin(SessionManager.GetCurrent.LoginID))
        End Using
    End Function

现在路径:/quotes/Transmittals.aspx/GetContractTypes是一个很大的404.如果我从路径中删除.aspx,就会找到它,但WebMethod永远不会被命中。

我所拥有的路由配置是您在创建新的Web应用程序时生成的标准配置:

Public Module RouteConfig
    Sub RegisterRoutes(ByVal routes As RouteCollection)
        Dim settings As FriendlyUrlSettings = New FriendlyUrlSettings()
        settings.AutoRedirectMode = RedirectMode.Permanent
        routes.EnableFriendlyUrls(settings)

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

        routes.MapRoute(
            name:="Default",
            url:="{controller}/{action}/{id}",
            defaults:=New With {.action = "Index", .id = UrlParameter.Optional}
        )
    End Sub
End Module 

我需要在路线配置中添加一些东西,还是需要更改我的ajax路径或什么?

0 个答案:

没有答案