2016-07-11 3 views
0

ViewBag의 속성을 부분보기로 설정하고보기를 호출해야합니다. 여기 내 코드는 다음과 같습니다이 index.cshtml입니다 :ASP MVC - ViewBag에서 부분보기로

<h2>@ViewBag.Title</h2> 
Html.RenderPartial("~/Views/Article/Partial.cshtml"); 

그리고이 컨트롤러 :

public ActionResult Index(int id) 
{ 
    return View(_db.Articles.Find(id)); 
} 

Partial.cshtml입니다 : 위에 제공된 코드를 기반으로

@model Article 
@{ 
    ViewBag.Title = Model.Article.Title; 
} 

<h2>....</h2> 
//html... 
+0

전체'Index.cshtml'을 표시 할 수 있습니까? 여기서 당신은 또한'Index()'에 대한 컨트롤러 동작뿐만 아니라 부분적인 부분을 렌더링합니까? – mtaanquist

답변

3

, 당신이 보인다 부분 뷰에서 ViewBag.Title을 설정하고 인덱스 뷰에서 ViewBag.Title을 사용하려고 시도하십시오. 이것은 작동하지 않습니다. 부분적으로는 페이지 제목을 수정하지 않을 기사의 제목을 쓰고 싶을 수도 있습니다.

제목을 설정할 위치를 고려해야합니다. 제어기 조치 또는 1w보기에서. 다음은 예입니다 :

컨트롤러

public ActionResult Index(int id) 
{ 
    ViewBag.Title = "My Title"; 
    return View(_db.Articles.Find(id)); 
} 

이 Index.cshtml 파일 수정 :

Index.cshtml

@model Article 

<h2>@ViewBag.Title</h2> 
@Html.Partial("_Partial", Model) 

을 그리고 부분을 업데이트합니다. 면도기 엔진은 사용할 cshtml 파일을 파악할만큼 똑똑하기 때문에 전체 경로를 제공 할 필요는 없습니다. 일반적인 명명 규칙은 밑줄을 사용하여 부분을 시작하는 것입니다.

_Partial.cshtml

@model Article 

<h2>@Model.Title</h2> 
... 

나는 확실히 당신이를 변경할 수 있도록 모델이 설정 방법을 모르겠어요. 모든 것을 색인 파일에 작성하는 대신 부분적으로 사용하는 이유를 고려해야합니다.

아이디어가 페이지에 개별 기사 (Linq 쿼리가 암시하는 것처럼 보임)가 표시되어야하는 경우 단일보기에서만 모든 기사를 작성할 수 있습니다. 이것은 물론 단지 샘플, 그리고 당신이 원하는대로 당신이 당신의 서식을 적용해야 Index.cshtml

@{ 
    ViewBag.Title = Model.Title; 
} 

@model Article 

<h2>@Model.Title</h2> 
<p>@Model.Content<p> 

제안

예를 들면 다음과 같습니다이다. 그러면 페이지 제목 (브라우저에서)이 "사이트 이름 - 기사 제목"으로 설정되고 h2 요소에도 제목이 표시됩니다.

+0

마법사가 있고 각 단계는 부분적입니다.단계별로 전체 페이지를 다시로드하지 않고 단계별로 ViewBag 제목을 변경하고 싶습니다. 변경 사항이있을 때 + –

+0

안녕하세요 @AlanBall, 새 질문을 열어 볼 수 있습니다. 수행하려는 코드 예제를 제공하십시오. – mtaanquist

0

부분보기를 호출하는 방식이 잘못되었습니다. 부분보기에는 기사 모델이 필요합니다. Html.Partial("Partial", Model) - 여기 모델은 컨트롤러의 색인 작업 방법에서 전달한 기사 인 Index.cshtml에서 사용할 수있는 모델입니다.