2015-04-22 64 views
2

這個問題涉及到ASP.NET MVC 5使用路由屬性在ASP.NET MVC 5隨着地區

我試圖通過使用路由屬性用在我的網址連字符,但我沒有任何運氣得到它的工作。 I'm using this questionthis MSDN blog reference.這個網址我想有是:

/my-test/ 
/my-test/do-something 

當我建立我的項目,並把我在瀏覽器中測試的頁面中,我得到一個404錯誤。這裏是我的代碼至今:

// RouteConfig.cs 
public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapMvcAttributeRoutes(); 
     AreaRegistration.RegisterAllAreas(); 
     ... 
    } 
} 

// MyTestController.cs - NOTE: THIS FILE IS IN AN AREA 
[RouteArea("MyTest")] 
[RoutePrefix("my-test")] 
[Route("{action=index}")] 
public class MyTestController : Controller 
{ 
    [Route("~/do-something")] 
    public JsonResult DoSomething(string output) 
    { 
     return Json(new 
     { 
      Output = output 
     }); 
    } 

    [Route] 
    public ViewResult Index() 
    { 
     return View(); 
    } 
} 

// Index.cshtml 
<script> 
    $(document).ready(function() { 

     // I'm using an ajax call to test the DoSomething() controller. 
     // div1 should display "Hello, World!" 
     $.ajax({ 
      dataType: "json", 
      type: "POST", 
      url: "/product-management/do-something", 
      data: { 
       output: "Hello, World!" 
      } 
     }).done(function (response) { 
      $("div1").html(response.output); 
     }); 
    }); 
</script> 
<div id="div1"></div> 

當我創建的區域,一個區域的註冊文件被創建,我不得不在該文件中所有的路由信息​​,但根據MSDN博客中,我可以刪除文件並完全依賴路由屬性。

+0

這是什麼意思 - 「在瀏覽器中測試」? –

+0

我在瀏覽器中測試我的代碼,看看我的路由屬性是否正常工作。 – Halcyon

回答

1

我想通了。該類需要以下RouteAreaAttribute:

[RouteArea("MyTest", AreaPrefix = "my-test")] 
public class MyTestController : Controller 
{ 
    ... 
} 

這也允許我刪除區域路由註冊文件!