2011-12-09 4 views
0

라우팅 그래서 내가 잘 작동하는 AdminControllerASP.NET MVC 3 컨트롤러

public class AdminController : Controller 
{ 
    // 
    // GET: /Admin/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Users() 
    { 
     return View(); 
    } 
    public ActionResult Books() 
    { 
     return View(); 
    } 

} 

있는 일부 MVC 라우팅

을 처리하는 방법에 대한 약간의 혼란 스러워요. 그래서/Admin/Books에 갈 수 있습니다.

이것은 책 관리를위한 관리자 메뉴입니다. 지금 거기에서 나는처럼 길 수 있고 싶다

/Admin/Books/ViewBook/10 
or 
/Admin/Books/Add 

그런 무엇인가. 나는 이런 식으로 경로를 정하는 방법을 파악할 수없는 것 같습니다. 내가 컨트롤러

AdminBookController

public class AdminBooksController : Controller 
{ 
    // 
    // GET: /AdminBooks/ 
    public ActionResult List() 
    { 
     return View(); 
    } 

    public ActionResult Add() 
    { 
     return View(); 
    } 
    [HttpGet] 
    public ViewResult BookDetails(Guid guid) 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ViewResult BookDetails(ModifyBook Book) 
    { 
     if (ModelState.IsValid) 
      return View("Book successfully Edited!"); 
     else 
      return View(); 
    } 
} 

}

을했다하지만 난 그것이 내가/관리/도서/액션 같은 느낌/AdminBooks되고 싶지 않아/파람 훨씬 좋네요.

미리 감사드립니다.

답변

2

, 당신은 (이 순서대로) 다음과 같은 경로를 매핑해야합니다 :

// maps /Admin/Books/ViewBook/{id} to AdminBooksController.BookDetails(id) 
routes.MapRoute(
    "AdminBooks_ViewBook", // Route name 
    "Admin/Books/ViewBook/{id}", // URL with parameters 
    new { controller = "AdminBooks", action = "BookDetails", id = UrlParameter.Optional } // Parameter defaults 
); 

// maps /Admin/Books/{action}/{id} to AdminBooksController.{Action}(id) 
routes.MapRoute(
    "AdminBooks_Default", // Route name 
    "Admin/Books/{action}/{id}", // URL with parameters 
    new { controller = "AdminBooks", action = "List", id = UrlParameter.Optional } // Parameter defaults 
); 

이 질문을 참조하십시오

참고 : 기본 MVC 경로 앞에 이러한 매핑을 넣어야합니다.

+0

특수성에 감사드립니다. – Jordan