올바르게 이해한다면 메서드에 전달 된 매개 변수의 값에 따라 다른 동작과 다른 논리를 실행하려고합니다.
당신이 할 수있는 한 가지 방법은 라우팅 시스템을 사용하는 것이지만, 매개 변수의 가능한 값이 관리 가능한 크기 인 경우에만 이것을 선택하는 것이 좋습니다. 당신의 RouteConfig.cs에서 다음
파일 : 논리 # 1에 의해 처리되어야한다 foo는 각각의 가능한 값이, 자책골 URL을 것
public static void RegisterRoutes(RouteCollection routes)
{
// ... other routes
string[] possibleValueSet1 = new[] { ... };
string[] possibleValueSet2 = new[] { ... };
for (int i = 0; i < possibleValueSet1.Length; ++i)
{
routes.MapRoute(
name: "YourActionWithValueSet1_" + i.ToString(),
url: "ControllerName/FirstAction/" + possibleValueSet1[i],
defaults: new { controller = "ControllerName", action = "FirstAction", foo = possibleValueSet1[i] }
);
}
for (int i = 0; i < possibleValueSet2.Length; ++i)
{
routes.MapRoute(
name: "YourActionWithValueSet2_" + i.ToString(),
url: "ControllerName/SecondAction/" + possibleValueSet2[i],
defaults: new { controller = "ControllerName", action = "SecondAction", foo = possibleValueSet2[i] }
);
}
}
이 방법, 동일 값 적용 이는 로직 # 2에 의해 처리되어야한다.
내 생각에 당신은 이미 암시적인 반면, 단순한 의사 결정을 구현하는 것보다 더 유지 보수가 가능하거나 일반적으로 더 나은 것은 아니라고 생각합니다. C#에서 허용하지 않는 "값 기반 오버로드"와 같은 사운드를 요구하는 경우, 위의 코드는 실제 오버로드는 아니지만 라우팅 엔진에서 처리하도록하는 일종의 더러운 해결 방법입니다. 하드 코드 된 가능한 값을 기반으로 다른 조치에 맵핑합니다.
반환 형식을'JsonResult'에서'ActionResult'로 변경하십시오. 여기에서'JsonResult'와'RedirectResult'가 상속합니까? 당신은 항상 그 메소드에서 JSON을 리턴하지는 않으므로 사용중인 리턴 유형이 맞지 않습니다. – CodeCaster
어, AJAX 통화를위한 작업을 만들고있는 것 같습니까? 그렇다면 "리디렉션"논리는 무엇입니까? – Kamo
은'JsonResult' 대신'ActionResult'를 사용합니다. 당신은 현재 액션에서'return Json (yourData, JsonRequestBehavior.AllowGet)'을 사용하여 결과로 JSON을 반환 할 수 있습니다. 아니면'SecondAction' –