머리글에 필요한 부분보기를 반환하는 하위 작업 메서드를 사용할 수 있으며 레이아웃에서이 동작 메서드를 호출 할 수 있습니다.
필요한 속성에 대한보기 모델을 만듭니다.
public class AllPageVm
{
public int SelectedItem { set; get; }
public List<SelectListItem> Items { set; get; }
}
이제 컨트롤러에서 작업 방법을 만듭니다. ChildActionOnly
데코레이터로이 작업 방법을 표시하십시오.
public class HomeController : Controller
{
[ChildActionOnly]
public ActionResult HeaderSearch()
{
var vm = new AllPageVm()
{
Items = db.States
.Select(a => new SelectListItem() {Value = a.Id.ToString(),
Text = a.Name})
.ToList()
};
return PartialView(vm);
}
이제 HeaderSearch.cshtml
부분보기에, 당신은 당신이 당신의 검색 헤더 원하는 마크 업 렌더링 할 수 있습니다. 다음은 드롭 다운을 렌더링하는 간단한 예제입니다. 당신은 당신이 원하는 마크 업을 포함하는이 부분을 업데이트 할 수 있습니다 (예는 : 텍스트 상자, 드롭 다운 메뉴 및 버튼 등이있는 폼 태그) 레이아웃에서 지금
@model AllPageVm
<div>
<label>Select one state</label>
@Html.DropDownListFor(a => a.SelectedItem, Model.Items, "Select")
</div>
, 당신은이 아이 액션 메소드
<div class="container body-content">
@Html.Action("HeaderSearch", "Home")
@RenderBody()
<hr/>
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
를 호출 할 수 있습니다
View 메서드 대신 HeaderSearch 자식 작업 메서드에서 PartialView
메서드를 호출하고 있는지 확인하십시오. View 메서드를 호출하면 재귀 적으로 같은 메서드가 호출되어 StackOverflow 예외가 발생합니다.
감사합니다. +1 나를 알지 못했던 새로운 개념을 소개합니다. 나는 내 컴퓨터 앞에서 바로이 솔루션을 시도 할 것이나, 처음 보면 완벽하게 이해할 수 있습니다. –