ProductImage를 사용하는 강력한 형식의 Partial View가 있으며 렌더링 할 때 포함하는 페이지에서 동적으로 생성하는 추가 ViewData도 제공하고 싶습니다. RenderPartial 호출을 사용하여 강력한 형식의 객체와 사용자 정의 ViewData를 부분 뷰로 전달하는 방법은 무엇입니까?
var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
index++;
}
답변
RenderPartial은 단순히 ViewDataDictionary 인 다른 매개 변수를 사용합니다. 당신은 거의 거기에 있습니다.
Html.RenderPartial(
"ProductImageForm",
image,
new ViewDataDictionary { { "index", index } }
);
이것은 다른 모든 뷰가 기본적으로 가지고있는 기본 ViewData보다 우선합니다. ViewData에 무언가를 추가하는 경우이 새로운 사전에 부분 뷰로 전달되지 않습니다.
답변
womp 게시 내용을 확장하기 위해 다음 과 같은 생성자 오버로드를 사용하는 경우 기존의 View Data를 유지하면서 새로운 View Data를 전달할 수 있습니다ViewDataDictionary
.
Html.RenderPartial(
"ProductImageForm",
image,
new ViewDataDictionary(this.ViewData) { { "index", index } }
);
답변
@Html.Partial("_Header", new ViewDataDictionary { { "HeaderName", "User Management" }, { "TitleName", "List Of Users" } })
or
@{Html.RenderPartial("_Header", new ViewDataDictionary { { "HeaderName", "User Management" }, { "TitleName", "List Of Users" } });}
부분 페이지 (_Header) :
<div class="row titleBlock">
<h1>@ViewData["HeaderName"].ToString()</h1>
<h5>@ViewData["TitleName"].ToString()</h5>
</div>
답변
나는 이것이 효과가 없다고 생각합니까?
ViewData["currentIndex"] = index;
답변
강력한 형식의 클래스가 포함 된 다른 클래스를 만듭니다.
수업에 새 물건을 추가하고보기에 반환하십시오.
그런 다음보기에서 새 클래스를 상속하고 오류가 발생할 코드 비트를 변경하십시오. 즉 필드에 대한 참조입니다.
도움이 되었기를 바랍니다. 그렇지 않은 경우 알려 주시면 특정 코드를 게시하겠습니다.
답변
추가 데이터를 전달하는 가장 쉬운 방법은 @Joel Martinez 노트와 같이 뷰의 기존 ViewData에 데이터를 추가하는 것입니다. 그러나 ViewData를 오염시키지 않으려면 RenderPartial에는 표시하는 두 개의 인수 버전뿐만 아니라 세 개의 인수를 취하는 메소드가 있습니다. 세 번째 인수는 ViewDataDictionary입니다. 전달하려는 추가 데이터 만 포함하는 부분에 대해서만 별도의 ViewDataDictionary를 구성 할 수 있습니다.
답변
이것도 효과가 있습니다.
this.ViewData.Add("index", index);
Html.RenderPartial(
"ProductImageForm",
image,
this.ViewData
);