ASP.NET MVC中的MapRoute问题(适用于IIS6)

时间:2010-02-10 08:24:41

标签: ajax iis-6 asp.net-mvc-routing maproute

我在服务器(IIS6)上进行路由时遇到问题。它在开发环境中运行正常:

routes.MapRoute(
       "FindCities", 
       "FindCities/{state_id}",
        new { controller = "Regions", action = "FindCitiesByStateID", state_id = "" });

我在这里称之为:

   $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: "FindCities/" + state_id,
            data: "{}",
            dataType: "json" 
            ...

我拥有的所有路线:

            routes.MapRoute(
                "Default",
                "{controller}.aspx/{action}/{id}",
                new { action = "Index", id = "" }
              );

            routes.MapRoute(
              "Root",
              "",
              new { controller = "Home", action = "Index", id = "" }
            );

我已经尝试过url:“FindCities.aspx /”+ state_id和“FindCities.aspx / {state_id}”等变体,但它找不到正确的方法。 为IIS6编写路由的正确方法是什么? TIA

2 个答案:

答案 0 :(得分:0)

我已经写了一个直接的网址,如果你知道如何为IIS6写路由,请回答

        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: "Regions.aspx/FindCitiesByStateID/",
            data: 'state_id=' + state_id,
            dataType: "json"
            ...

答案 1 :(得分:0)

@ 1gn1ter你考虑过使用jquery.ajax url @ Url.Action(“”)方法吗?通过使用@ Url.Action(“”),您可以在运行时解析整个URL。因此,它将在开发和生产环境中相匹配。

如果您需要使用该特定路线,您还可以使用@ Url.RouteUrl()将您的路线名称作为参数传递。

示例

 $("#something").click(function(){

    var values = {cityId: $("#txtCity").val() }

    $.ajax({    
         //Other ajax definitions like type, content, datatype, etc

         url: '@Url.Action("YourActionName", "YourControllerName")',    
         data: values, 


     success: function(data){    
//Do something    
},    
             error: function(x, y, z){    
//Something bad happened  
} 

     }); 
    });