이 행을 포함하는 _layout.cshtml이 있습니다.레이아웃에서 부분 뷰로 데이터를 전달하는 방법은 무엇입니까?
@{Html.RenderPartial("Menu");}
이제이 RenderPartial 함수에 모델을 전달하고 싶습니다. 이 모델은 내 저장소에서 읽을 수 있습니다.
어떻게 그리고 어디서 (코드로) 이것을 할 수 있습니까?
고마워!
이 행을 포함하는 _layout.cshtml이 있습니다.레이아웃에서 부분 뷰로 데이터를 전달하는 방법은 무엇입니까?
@{Html.RenderPartial("Menu");}
이제이 RenderPartial 함수에 모델을 전달하고 싶습니다. 이 모델은 내 저장소에서 읽을 수 있습니다.
어떻게 그리고 어디서 (코드로) 이것을 할 수 있습니까?
고마워!
RenderPartial에는 개체를 부분 뷰로 보낼 수있는 오버로드가 있습니다. 올바른 오브젝트 유형을 사용하려면 partialview의 맨 위에 @model을 정의하는 것을 잊지 마십시오.
@ Html.RenderPartial ("view 이름", 개체)
추가 정보 :
나는이에 소요 MenuController을 쉽게 만들 수있을 거라고 생각 : 코멘트 후 MSDN
편집 저장소. 그런 다음 필요한 저장소를 모델로 취한 다음, foreach가 모든 메뉴 항목을 actionlinks로 렌더링하고 메뉴 정보를 전달하는보기를 만듭니다.
그래서 당신은 당신의 _layout.cshtml이있을 것입니다 :
<div id="Menu">
@{Html.RenderAction("Menu", "Menu");}
</div>
이 당신의 MenuController에 :
public class MenuController : Controller
{
private IMenuRepository _repository;
public MenuController(IMenuRepository repo)
{
_repository = repo;
}
//
// GET: /Menu/
public PartialViewResult Menu(string menu = null)
{
ViewBag.SelectedMenu = menu;
IEnumerable<MenuInfoObject> menus= _repository.Menus;
return PartialView(menus);
}
}
그리고 당신의 MenuView :
@model IEnumerable<MenuInfoObject>
@{
Layout = null;
}
@foreach (var item in Model)
{
@Html.RouteLink(item.MenuName, new
{
controller = item.ControllerInfo,
action = item.ActionInfo,
}, new
{
@class = item.Menu == ViewBag.SelectedMenu ? "selected" : null
})
}
는 그 가까이겠습니까을 솔루션에?
레이아웃의 부분보기로 데이터를 전달하는 또 다른 솔루션이 있습니다. 당신은 단순히 당신의 _Layout.cshtml 파일
@Html.Action("ActionName","ControllerName")
에 그리고 당신의 컨트롤러에이를 추가 할 수 있습니다
[ChildActionOnly]
public ActionResult ActionName()
{
var model = new YourModel();
return PartialView(model);
}
ChildActionOnly
속성은 액션 메소드 만 자식 방법으로 호출 할 수 있도록합니다. 이 작업을 수행하면 레이아웃의 모델로 해당 부분 뷰가 렌더링됩니다.
나는 그것을 알고 있지만, 내 layout.cshtml 파일에 있습니다. 저장소에서 내 모델을 어디에서 읽을 수 있습니까? –
수정 된 게시물 ... 도움이 되었기를 바랍니다. –