보기에서 경로 값을 감지 할 수 있습니까?보기에서 경로 값 검색
/pages/create/1
과 같이 1이 있는지 확인하고 싶습니다.
기본적으로이 값을 기반으로 다른 부분 뷰를 렌더링하고 싶지만 실제로 달성하려는 최선의 방법이 아닐 것이라고 확신합니다.
참고로 위의 작업을 수행하는 대신 내 컨트롤러의 값을 기반으로 뷰에서 렌더링 된 부분 뷰를 변경할 수 있습니까?
보기에서 경로 값을 감지 할 수 있습니까?보기에서 경로 값 검색
/pages/create/1
과 같이 1이 있는지 확인하고 싶습니다.
기본적으로이 값을 기반으로 다른 부분 뷰를 렌더링하고 싶지만 실제로 달성하려는 최선의 방법이 아닐 것이라고 확신합니다.
참고로 위의 작업을 수행하는 대신 내 컨트롤러의 값을 기반으로 뷰에서 렌더링 된 부분 뷰를 변경할 수 있습니까?
ViewContext.RouteData.Values["whatever"]
당신은 ViewPage.ViewContext.RouteData
를 통해 RouteData
개체를 검사 할 수 있습니다. 당신이 대신 컨트롤러에이 값을 검사 할 찾을 경우
string areaname = routeData.Values["area"] as string;
string controllername = routeData.Values["controller"] as string;
string actionname = routeData.Values["action"] as string;
string id = routeData.Values["id"] as string;
같은 것을 사용하여 값을 확인, 당신은 ControllerBase.ControllerContext.RouteData를 사용하여 액세스 할 수 있습니다. 비슷한 액션 필터 등
다른 답변이 정확 적용,하지만 난 당신의 마지막 문장 해결 거라고 생각 : 내가 할 것이 가능하다 대신 위의 일을, 보조 노트에
을 내 컨트롤러의 값을 기반으로 뷰에서 렌더링 된 부분 뷰를 변경할 수 있습니까?
뷰의 뷰 자체 렌더링 음 부분 다음 코드 (자바 스크립트에서 호출하고 DOM에 직접 결합하지 않는 한) :
<%: Html.RenderPartial("SomePartial") %>
그래서 "코드 수프"를 방지하기 위해 (if 문)에서 보기에서 다음
public static string RenderCustomPartial(this HtmlHelper helper, RouteData rd)
{
string partialName;
if (rd.Values["SomeParam"] == 1)
partialName = "PartialOneName";
else
partialName = "PartialTwoName";
return helper.RenderPartial(partialName);
}
그리고 :
보기, 당신은 ViewContext를 검사 한 후 RenderPartial를 통해 호출하는 HTML 도우미를 사용<%: Html.RenderCustomPartial(ViewContext.RouteData) %>
위와 같은 일부 모델을 만들 수 있습니다. 즉, 확장에서 직접 경로 데이터에 액세스하고 모델을 통과하여 부분 등에서 바인딩하는 등 아이디어를 얻을 수 있습니다.
위의 IF 문을 컨트롤러에서 수행하고 ViewData에 부분 뷰 이름을 채운 다음 View의 일반 RenderPartial 호출에서 사용할 수 있습니다.
무엇이든지 배를 부유시킵니다. :)