ASP.NET MVC : 잠깐만… 기본 경로 매개 변수의 이름을 ID로 지정해야합니까?
-
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가 컨트롤러 및 작업에 대한 매개 변수 및 기본값을 갖는 것이기 때문입니다.
기본 경로가 여전히있는 경우 경로를 추가하십시오. ~ 전에 그렇지 않으면 다른 하나와 먼저 일치합니다.
제휴하지 않습니다 StackOverflow