문제

나는 다음과 같은 두 노선에서 정의 내 MVC app.;- 순간에 나는 두"MVC 보기 내용 페이지"정의

/ShowName/NameById
/ShowName/Index

그러나 콘텐츠에 이러한 두 개의 페이지가 동일한 것을 확인할 수 있습니다.그것은 두 개의 노선 동일한 콘텐츠를 공유하고 있을까요?그렇지 않은 경우 다음 수 있는)하나 만들에 대한 규칙을 모두선 또는 b)를 만들어야 합 정렬을 공유하는 사이에 콘텐츠 페이지를 표시 데이터는?

    routes.MapRoute(
       "NameById",
       "Name/{theName}/{nameId}",
        new
        {
            action = "NameById",
            controller = "ShowName",
            theName = "Charley"
        }
        ,new { nameId = @"\d+" }
   );

    routes.MapRoute(
       "ShowName",
       "Name/{theName}",
        new
        {
            action = "Index",
            controller = "ShowName",
            theName = "Charley"
        }
   );

편집 I have read 답변을 아래에 나는 다음과 같은 작업 결과 방법이 있습니다.를 제거하는 경우 하나의 방법(예:Index)그런 다음 어떻게 다시 작성 내로 단일하십니까?

public ActionResult Index(string theName)
public ActionResult NameById(string theName, int? nameId)

그래서 다음과 같은 작동 url 의 일입니까?

/Name/Charley
/Name/Charley/11234
도움이 되었습니까?

해결책

당신은 정말 필요 2 개의 다른 경로는?을 만들 수 있는 패턴을 인덱스에 대한 경로

Name/{theName}/{nameId}

nameId null 허용 입력을 당신의 작업입니다.그냥 몇 가지를 추가 논리를 작업하는지 여부를 확인 nameId 는 값에 따라 행동합니다.

다른 팁

를 만들 수 있는 부분에 대한 세부 사항 페이지의 영역,유지의 분리는 두 가지 작업을 경우에는 그 변경에서 나중에 점이다.또는 당신은 단지

return View("DetailView", model);

하지만 그 수 있습을 소개하는 추가 문자열을 관리하는 사 컨트롤러 두 개의 작업입니다.이후 MVC 지원하지 않는 과부 활동에 의하여 이름(지 않으면 당신이 얻/포스트 페어,하나의 인자가 없을)수 있습 확인{nameId}매개 변수는 경우 빈/null 을 사용하기 전에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top