这个问题与ASP.NET MVC 5有关。
我正在尝试使用路由属性在我的网址中使用连字符,但我没有任何运气让它工作。 I'm using this question和this 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 :(得分:2)
我明白了。该类需要以下RouteAreaAttribute:
[RouteArea("MyTest", AreaPrefix = "my-test")]
public class MyTestController : Controller
{
...
}
这也允许我删除区域路径注册文件!