1

변경할 수있는 UserName과 UserId에 대한 경로를 가질 수있는 옵션이 필요합니다. 이렇게하면 사용자는 쉽게 기억할 수있는 이점을 얻을 수 있습니다. Users/{UserId}URL 라우팅을 유지하는 방법 DRY

사용자가 기본 인 모든 경로에 대해 2 개의 경로를 작성하지 않아도되는 방법이 있습니까? ? 의견

에서

편집은 또한, 방법이 처리되지 않도록하고 싶습니다. 차라리 라우팅에서 처리 할 것입니다.

+0

아니요, b/c 두 번째 생각에 다른 유형이 –

+0

인 경우 동일한 경로를 문자열에 사용하고 전달 된 매개 변수를 int로 처리 할 수 ​​있는지 확인하십시오. –

+0

@DaveA Yah, 나는 그것에 대해 생각했다. 그러나 그것은 일종의 해킹 인 것처럼 보인다 ...... –

답변

0

요청이 UserId 또는 UserName에서 전달되는지 확인하려면 입력 매개 변수가 int인지 또는 문자열인지 확인해야합니다.

  1. 는 액션 메소드
  2. 의 판단 라우팅의 판단을 확인하십시오 : 당신은이 두 가지 옵션이 있습니다.

조치 방법에서 결정한 경우 단일 경로에서 두 경우를 모두 처리 할 수 ​​있습니다. 당신은 다음과 같은 경로를 설정하여이 문제를 해결할 것입니다 : 홈 컨트롤러에서 색인 작업 방법,

routes.MapRoute("", "User/{userSpecifier}", 
    new { controller = "Home", action = "Index" }); 

그런 다음 입력 매개 변수가 INT 또는 문자열 인 경우와 같은 코드를 통해 확인해야합니다 다음 :

public ActionResult Index(string userSpecifier) 
{ 
    int userId = 0; 
    if(int.TryParse(userSpecifier, out userId)) 
    { 
     //It is an int, and userId contains the user Id, so process accordingly 
    } 
    else 
    { 
     //It is not an int, so treat userSpecifier as username and process accordingly 
    } 
    .... 

    return View(); 
} 

는 "userSpecifier"입력 매개 변수에 전달 된 문자열을 int로 변환 될 수 있으면 그래서, 당신은 사용자 ID가 있다고 가정 할 수 있고 그에 따라 취급합니다. int로 변환 할 수없는 경우에는 UserName이라고 가정하고 그에 따라 반응 할 수 있습니다.

물론이 솔루션은 UserId가 int이고 UserName이 문자열 인 대부분의 응용 프로그램을 설정한다는 가정에 근거합니다.

대신 라우팅에서이 결정을 내리고 싶다면 두 개의 경로를 설정하고 route contraints을 사용하여 한 경로가 정수인 입력 매개 변수를 처리하도록하고 두 번째 경로는 입력 매개 변수를 처리해야합니다 그 문자열입니다.

+1

Dave A와 자신 사이의 의견을 읽었다면 이미 제안되었고 해킹 된 것으로 나타났습니다. 나는 이것들이 유일한 2 가지 옵션 일지 모르지만, 2 개의베이스 라인없이 라우팅을 설정하는 방법을 원합니다. 또한 틀린 것이 아닌 한 태그를 변경하지 마십시오. 난 ASP를 특정 태그를 무시하려고 대부분의 경우 다른 언어로 다른 솔루션을 모방 수 있습니다. –

0

나는 먼저 두 가지를 모두 참조해야하는 이유를 묻는 것으로 시작하겠습니까? 이것이 웹 API 경로 (즉, 안락한)라면 일반적으로 사용자 API 호출에 대해 하나의 get 메소드 만 가질 수 있습니다. 네가하는 일이 틀렸다는 말은 아니야! 사용자를 검색하는 두 가지 방법이 필요한지 궁금합니다.

+0

나는 나의 질문에 이미 그 이유를 대답했다. 휘발성이있는 경로 하나 (사용자 이름은 변경 가능)와 변경되지 않는 경로 하나 (사용자 ID는 변경 불가능)를 원합니다. 이것은 기억하기 쉬운 경로의 첫 번째 옵션을 만들어 주며, 두 번째 옵션은 모든 시간 동안 보장되는 것을위한 것입니다. –

관련 문제