2011-02-15 4 views
1

사이트를 만들고 현재 설명한 시나리오와 비슷한 시나리오를 다루는 영역을 고려 중입니다.ASP.NET MVC 3 영역 및 DDD 집계 루트

내가 현재 4 개 섹션 사이트를 가지고, 이러한 만들기 전화 관리, 제 3, 제 4

을 작성하고 내가 함께 일하고 있어요 도메인 개체에 대한 작업을하는 관리 할 수 ​​있습니다. 도메인 객체에는 여러 개의 하위 객체 컬렉션이 있습니다. 이들은 또한 생성되고 관리 될 필요가 있습니다. 그래서 "왜 당신이 제품 섹션이없는"

말을하지 마십시오 - 멀리 아무것도주지 않는하지만 그것은 아주 동일한 도메인에 맞지 않는 않도록

나는 예를 들어 제품을 사용하고 있습니다 나의 현재 구현은 카테고리, 카테고리 등의 작업이있는 ManageController, ProductsForCategory

나는 영역을 필요로 생각하고있다, 그러나, 일부 URL 관리/I가

  • 을 원하는 그래서 범위해야합니다/카테고리/8/제품 번호
  • /관리/카테고리/8/제품/1

지역을 사용하면 가능합니까? 새 라우팅 규칙을 설정해야합니까?

내 CategoryController에 조치에 대한 2 개의 매개 변수가 있습니까?

public ActionResult Product(int categoryId, int productId) 
{ 
    //get category 
    var cat = GetCategory(categoryId); 

    //get product 
    var product = cat.Products.SingleOrDefault(x=>x.Id == productId); 

    if(product == null) 
     return RedirectToAction("Index","Manage"); 

    return View(product); 
} 

그런 다음 카테고리 ID를 전달한 라우팅 규칙이 있습니까?

내 생각이 맞습니까?

답변

1

이것은 영역에서 가능합니다. 비록 중첩 된 MVC 응용 프로그램을 처리하기 위해 의미있는 폴더 구조로 코드를 구조화하는 것이 주로 권장되는 반면, 중첩 된 MVC 응용 프로그램을 처리하는 데는 영역을 주로 사용하는 것이 좋습니다. 노선?

public ActionResult Product(string categoryId, string id) 
:

context.MapRoute(null, 
     "Manage/{controller}/{categoryId}/{action}/{id}", 
     new 
     { 
      action = "Product", 
      id = "1", 
      categoryId = "2" 
     }); 

당신은 다음 해당 PARAMS을 받아 작업 방법을 만듭니다

그래서 같은 경로를 추가 한 후 당신이 당신의 "관리"영역을 만들 수 /Manage/Category/8/Product/1에 중첩 된 경로를 매핑하고

그러나 귀하의 질문에 집계 DDD의 뿌리에 대해 이야기하고 있으므로 질문의 일부만 답변 한 것으로 판단됩니다.