레이아웃 내에 레이아웃 페이지가 있습니다. 부분 뷰를 사용했고, 부분 뷰에는 빌드 한 메뉴 피처가 포함되어 있습니다. 부분 뷰로 메뉴를 분할했습니다. 유지하기 쉽습니다. 메뉴는 모든 페이지에서 사용되기 때문에 의도적으로 레이아웃에 배치되었지만 일부 옵션 만 특정 페이지에만 나타나는 메뉴에는 조건부 요소가 있습니다.레이아웃 페이지 내에서 부분 뷰로 모델을 전달할 수 없습니다.
나는 앞으로 나아갈 문제가 무엇인지에 대해 비틀 거 렸습니다. 메뉴는 아약스 호출을 사용하여 콘텐츠가 포함 된 부분보기를 렌더링합니다 (페이지로드 줄이기). 나는 회사를 포함하고있는 페이지에서 작업하고있었습니다. 연락처 목록을 클릭하면 메뉴 옵션에 연락처 목록이 표시됩니다. 이미 회사 모델에 연락처 목록을로드했습니다. 메뉴가 레이아웃 페이지에 포함 된 부분 뷰이므로 모델을 수용 할 수 없어 부분 뷰에 모델을 전달할 수 없기 때문에 연락처 목록을 렌더링해야하는 새로운 부분 뷰에서 액세스 할 수 없습니다. 메뉴 부분보기가 레이아웃 페이지에 있기 때문에로드하려고합니다.
이것은 끈적한 상황입니다. 새 섹션을 렌더링 할 수 있도록 레이아웃을 변경하여 새 뷰 모델을 전달할 수는 있지만, 빌드 할 때마다 메뉴를 참조해야합니다. 해충!) 나는 여기에서 뭔가를 놓치고 있어야한다. (아마도 이것이 내 MVC3 응용 프로그램이라고 생각하면된다.) 어떤 제안?
편집 : 나는 내 자신에 더이했다, 짧은 내 레이아웃 페이지는 항상 해당 데이터에 액세스 할 수있는 메뉴가 포함 같은 내 부분보기로 그것을 소비하는 페이지의 모델에 액세스 할 수 있습니다 . 내 메뉴 부분보기에서 페이지를 검사 한 다음 필요에 따라 데이터를 전달하는 일부 조건부 논리를 작성했습니다.
<div class="menu">
<ul>
<li><a href="@Url.Action("Create", "Contact")">New Contact </li>
<li><a href="@Url.Action("Index", "Contact")">Contact List </a></li>
</ul>
@if (Request.Url.PathAndQuery.Contains("/Contact/Details/"))
{
<ul>
<li>@Html.ActionLink("New Activity", "Create", "Activity", new { companyid = 0, contactid = Model.contact.id }, null)</li>
</ul>
}
</div>
상기 메뉴 부분 뷰의 작은 샘플이지만 메뉴는 접촉/상세 페이지를 구축하고 model.contact.id 전달할 수있다 일 실시 예를 포함한다. 내 메뉴와 레이아웃에 명시 적으로 모델이 포함되어 있지는 않지만 잘 작동하지 않는다는 점에서 효과적입니다.
답장을 보내 주셔서 감사합니다.이 게시물을 조금 더 가져 가면서 내 게시물을 수정했습니다. –
@DavidAbraham 귀하의 새로운 관심사에 대한 조언을 위해 제 대답을 편집했습니다. – DMulligan