저는 ASP.NET MVC에서 상당히 새롭고 대부분의 경우 단순한 질문을 가지고 있습니다. 그러나 무엇이 문제인지 파악할 수 없습니다. 최선의 접근법.다중 경로 동작에 대한보기/컨트롤러 접근 방식이 좋음
그래서 "메모"엔티티, 노트 컨트롤러 (표준 색인, 목록, 생성, 편집, 삭제 작업 포함) 및 노트보기가 있습니다. List 액션에 대해 말하면, 이것은 다른 소스에서 "호출"될 수 있습니다. 예 : 저는 프로젝트에 두 개의 노트가 첨부되어 있습니다. 그리고 저는이 노트를 만드는 사용자가 있습니다.
나는 4 (더 많은,하지만의 4 가정 해 봅시다)가 시나리오 :
- 목록 ALL 특정 사용자로부터 특정 프로젝트에 대한
- 목록 메모를
- 목록 메모 노트를
- 목록 노트 특정 사용자의 특정 프로젝트
결과 목록은 일부 ca에서 숨겨 질 수있는 일부 열을 제외하면 거의 비슷합니다 ses (및 상황에 맞는 메뉴 등 ..하지만 이것을 설정하는 방법을 생각해 나는 그것을 잘 처리 할 수 있다고 생각합니다).
즉
사례 1
이드 이유 양 프로젝트 사용자
사례 2
이드 이유 양 사용자
사례 3
아이디 이유 금액 프로젝트
사례 4
아이디 이유 금액
목록 액션
public ActionResult List(int? proj_id, int? user_id)
{
int requestType = proj_id.HasValue ? 1 : 0;
requestType += user_id.HasValue ? 2 : 0;
switch (requestType)
{
case 0: //no parameters
return View(getNotes());
break;
case 1: //filter by project
ViewData[ViewDataConst.VIEW_HIDE_COLUMN_PROJECT] = true;
return View(getNotesByProject(proj_id));
break;
case 2: //filter by user
ViewData[ViewDataConst.VIEW_HIDE_COLUMN_USER] = true;
return View(getNotesByUser(user_id));
break;
case 3: //filter by project and user
ViewData[ViewDataConst.VIEW_HIDE_COLUMN_PROJECT] = true;
ViewData[ViewDataConst.VIEW_HIDE_COLUMN_USER] = true;
return View(getNotes(proj_id, user_id));
break;
}
}
에 대한 그리고 내가 가진 관련 목록보기에 이것은 의사 코드 예 :
@if (!ViewData[ViewDataConst.VIEW_HIDE_COLUMN_PROJECT])
{
<th> Project Name </th>
}
내 질문은 :이 접근법이 맞습니까? 아니면 완전한 WTF입니까? 다른 열을 처리하는보기가 여러 개 있어야합니까? 그 행동이 사실상 같다고해도? 여러 컨트롤러? ViewData는 순수한 악의입니까? :)
투옥에 대한 어떠한 회신, 조언, 제안도 환영합니다.
알 수 있습니다. 하지만 내 생각은/Projects/1/Users/Projects/1/Notes 등과 같은 것이 었습니다. 이런 식으로 시나리오를 작성해야합니까? – AlbertoA
@AlbertoA 예, 의미있는 경로를 원할 경우 개별 노선을 작성해야합니다. ListFor (int userId, int projectId)에 문제가 발생할 수 있습니다. 아마도 다음과 같이해야 할 것입니다 :/Projects//User//Notes. 열심히 노력한다면 아마도 경로를 조금 일반적으로 만들 수있을 것입니다.하지만 이것은 많은 작업이 될 수 있으며 디버깅하기에 지옥이 될 것입니다. –
gisek