ASP MVC 1.0에서 처리 할 복잡한 URL은 입니다. 대부분의 컨트롤러에서 수행해야하는 모든 작업에는 항상 계정과 프로젝트라는 두 개의 매개 변수가 필요합니다. 이것은 각 액션의 요구 사항 위에 있습니다. 이는 일반적인 URL은 다음과 같이 의미 :이 예에서ASP에서 복잡한 URL 처리 MVC
http://abcd.com/myaccount/projects/project_id/sites/edit/12
: 내 계정 계정 이름입니다. 프로젝트은 컨트롤러 일 수 있으며, 다른 옵션은 위치입니다., 직원은입니다. 가는 컨트롤러가 될 수 내 계정, 사이트 내 프로젝트의 ID입니다 PROJECT_ID, 다른 옵션 직원 또는 지불 같다. 편집은 조치이며 은 편집 된 사이트의 ID입니다.
이제 경로를 만들고 모든 작업에 두 개의 추가 매개 변수를 추가하여 project_id와 account를 컨트롤러의 모든 작업에 전달할 수 있습니다. 이것은 실제로 원하지 않으며 또한 두 컨트롤러 (프로젝트 및 사이트)가 여기서 작동 할 지 확신하지 못합니다.
필자의 이상적인 상황은 컨트롤러 동작 호출로 이동하고 project_id 및 myaccount를 거기에 저장하는 일종의 컨텍스트를 사용하는 것입니다. 나머지 매개 변수는 다음과 같은 일반적인 방법으로 처리 할 수 있습니다.
// sitescontroller
public ActionResult Edit(string id)
{
string account = somecontext["account"];
string project_id = somecontext["project"];
// do stuff
}
어떻게/어디에서 발생 할 수 있습니까? 또한 ActionLink에서 어떻게 작동할까요? (예 :이 컨텍스트를 기반으로 올바른 링크 생성)
감사합니다.
이것을 보는 방법 중 하나입니다. 이는 Basecamp (37 신호)가 작동하는 방식과 정확히 같습니다. Basecamp에 계정을 만들면 다음과 같은 URL이 표시됩니다. http://accountName.basecamphq.com/projects/123/notes/345 ZenDesk도 정확히 동일합니다. (나는 GetSatisfaction이라고 생각한다). 내 요구 사항은 매우 비슷합니다. – Khash
하지만 accountname은 컨트롤러가 아니라 컨트롤러가 필요로하지 않는 매개 변수이지만 응용 프로그램 자체는 페이지가 올바른 회사로 이동하도록합니다. John Downey가 제안한대로 할 수 있습니다. 우리는 부모 컨트롤러로 컨트롤러를 오버라이드하고 계정 이름 매개 변수를 효과적으로 캡쳐하고, 누가 누구인지, 어디로 가고 싶은지에 따라 다르게 표시/인증하는 방식으로 비슷한 위치에서 작업을 수행했습니다. –