ASP.NET MVC : 잠깐만… 기본 경로 매개 변수의 이름을 ID로 지정해야합니까?

StackOverflow https://stackoverflow.com/questions/1004331

  •  05-07-2019
  •  | 
  •  

문제

다른 사람 이이 문제가 있습니까? 나는 뭔가 잘못하고 있어야한다.

그래서 나는 다음과 같은 오류에 대한 경로를 설정하고 있습니다.

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { error = "" }
);

그리고 호출 :

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));

그리고 컨트롤러에서 :

public ActionResult Error(String error)

단순한 맞습니까? 이것이 실제로 실행되면 URL이 모양에도 불구하고 오류가 널입니다.

/shared/error/thisheerror

그러나 오류 메소드의 오류 매개 변수는 NULL입니다. (그렇습니다. 나는 다른 단어를 시도했습니다)

이제 모든 것을 'ID'라는 단어로 바꾸면 모든 것이 작동합니다.

Global.asax.cs

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{id}",
 new { id = "" }
);

리디렉션 :

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));

공유 컨트롤러 :

public ActionResult Error(String id)

값을 취하는 기본 경로가있는 경우 id a는 모든 경로에 대한 단어가 있어야합니까?

도움이 되었습니까?

해결책

항상 컨트롤러 및 작업 매개 변수를 지정해야합니다.

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { controller = "Shared", action="Error", error = "" }
);

ID를 사용하는 이유는 기본 경로가 여전히 등록되어 있기 때문에 ID가 컨트롤러 및 작업에 대한 매개 변수 및 기본값을 갖는 것이기 때문입니다.

기본 경로가 여전히있는 경우 경로를 추가하십시오. ~ 전에 그렇지 않으면 다른 하나와 먼저 일치합니다.

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