이 하나가 나를 던져서 내가 도움을 요청할 것이라고 생각했습니다. 내 "카테고리"경로로 작업 할 수있게되었지만, "소비자"와 같은 일을하려고 할 때 어떤 이유로 작동하지 않습니다.ID 대신 이름이있는/Admin 영역의 ASP.NET MVC 3 라우팅
라우팅 (AdminAreaRegistration.cs) :
내 소비자 컨트롤러에서 다음public override void RegisterArea(AreaRegistrationContext context)
{
//matches /Admin/BusinessCategories/MyCategory/children
context.MapRoute(
"ChildCategories",
"Admin/BusinessCategories/{category}/children",
new { controller = "BusinessCategories", action = "ViewChildren" }
);
//matches /Admin/BusinessCategories/MyCategory/edit
context.MapRoute(
"EditCategory",
"Admin/BusinessCategories/{category}/edit",
new { controller = "BusinessCategories", action = "Edit" }
);
// want this to match /Admin/Consumers/JoeBob/details
context.MapRoute(
"ConsumerDetails",
"Admin/Consumers/{alias}/details",
new { controller = "Consumers", action = "Details" }
);
//matches /Admin
//matches /Admin/BusinessCategories
//matches /Admin/BusinessCategories/New
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "AdminHome", action = "Index", id = UrlParameter.Optional },
new { id = @"\d+" }
);
}
(ConsumersController.cs) : 다음
public class ConsumersController : Controller
{
public ActionResult Index()
{
...code...
}
[HttpGet]
public ActionResult Details(string alias)
{
return View(alias);
}
}
내가 좋아하는 내 링크를 생성하고 여기에 필요한 배경 정보입니다 그래서 :
@Html.ActionLink(c.Alias, "Details", "Consumers", new { alias = c.Alias }, null)
문제는 @ Html.ActionLink 내 호출이 생성된다는 것이다 이다 (클릭하면, 404 결과)
/Admin/Consumers/details?alias=JoeBob
오히려 내가 원하는 것보다, : 같은 링크 내가 alias = c.Alias
id = c.Alias
로 변경하면 내가 눈치 챘을
/Admin/Consumers/JoeBob/details
한 가지입니다, /Admin/Consumers/details/JoeBob
(따라서 쿼리 문자열에서 별칭 부분을 제거하지만 여전히 별칭 앞에 'details'을 넣습니다.)
아이디어가 있으십니까?
: IIS를 재부팅하면 문제가 해결됩니다. 왜 그런지는 모르지만 그랬습니다.
내가 특별히이 문제의 원인이 무엇인지 모르겠지만, 내가 강하게 routedebugger에서 살펴 보는 것이 좋습니다 그것이 어떤 힌트를 제공하는지보기 http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx – lomaxx
그래, 그 util에 대해 알고있다. 그리고 링크는 사실 v2에 있어야한다. - http://haacked.com/archive/2011/04/13/routedebugger-2.aspx – jamauss