는이 같은 현재 활성 컨트롤러를 기반으로 표시되는 컨텍스트를 기반으로 메뉴가 asp.net의 MVC의 스위치 내부 :IF-문
@switch (this.ViewContext.RouteData.Values["controller"].ToString().ToLower())
{
case "unitdetails":
Html.RenderPartial("_ContextMenu");
break;
case "operation":
Html.RenderPartial("_ContextMenu");
break;
case "trend":
Html.RenderPartial("_ContextMenu");
break;
case "wellguide":
Html.RenderPartial("_ContextMenu");
break;
case "setup":
Html.RenderPartial("_ContextMenu");
break;
case "site":
Html.RenderPartial("_ContextMenu");
break;
case "alarms":
Html.RenderPartial("_ContextMenu");
break;
case "asx":
Html.RenderPartial("_ContextMenu");
break;
case "reports":
}
오늘까지 벌금 근무를, 내가 건너 온 문제. 내 컨트롤러에는 몇 가지 다른 조치가 있지만 메뉴를 모두 표시하지는 않습니다. 그래서, 현재 작업이 내 _ContextMenu
렌더링 해야하는지 확인하기 위해 "보고서"사건을 조사해야합니다. 이의 라인을 따라
겠습니까 뭔가 적절 :
case "reports":
if (this.ViewContext.RouteData.Values["action"].ToString().ToLower() == "unitactivity")
{
Html.RenderPartial("_ContextMenu");
break;
}
else
{
goto default;
}
내가 말하는 예외가 발생,이 작업을 얻이 수없는 것
(참고 : 나는 네임 스페이스 제거) : Message='UnitActivityModel' does not contain a definition for 'ViewUnitContract'
을 이것은 스위치의 다른 모든 경우와 잘 작동하지만 현재 동작을 확인하기 시작할 때 문제가 발생합니다. 어떤 제안? 다른 컨트롤러는보기에 강하게 입력 된 UnitActivityModel
을 사용합니다.
정확히 '스위치'문장의 요점은 무엇입니까? 'case'에 관계없이 똑같은 일을합니다 ...? –
모든 컨트롤러에 대해 동일한 부분 뷰를 표시해야합니다. 좀 지저분한 일 이겠지만, 그것이 내가 처음부터 잘 작동하도록하는 방법입니다. –
@NicklasWinger는 모든 경우에 동일한 코드를 반복하지 않습니다. case 대신 "unitdetails"를 사용하십시오 : case "site": ... case "asx": Html.RenderPartial ("_ ContextMenu"); break;' –