itsource

강력한 유형의 부분 뷰에 추가 뷰 데이터 전달

mycopycode 2023. 5. 2. 22:39
반응형

강력한 유형의 부분 뷰에 추가 뷰 데이터 전달

저는 제품 이미지를 촬영하는 강력한 유형의 부분 보기를 가지고 있으며 렌더링 시 포함된 페이지에서 동적으로 생성하는 추가 보기 데이터도 제공하고 싶습니다.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(보기 데이터)에 추가할 내용이 있는 경우 부분 보기로 전달되는 내용은 이 새 사전에 없습니다.

의 생성자 오버로드를 사용하는 경우 게시된 WMP에 대한 확장을 위해 기존 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" } });}

부분 페이지(_헤더):

<div class="row titleBlock">
    <h1>@ViewData["HeaderName"].ToString()</h1>
    <h5>@ViewData["TitleName"].ToString()</h5>
</div>

안 되나요?

ViewData["currentIndex"] = index;

강력한 형식의 클래스를 포함하는 다른 클래스를 만듭니다.

클래스에 새 항목을 추가하고 보기에 반환합니다.

그런 다음 보기에서 새 클래스를 상속하고 오류가 발생할 코드 비트를 변경합니다.즉, 필드에 대한 참조입니다.

이게 도움이 되길 바랍니다.그렇지 않으면 알려주시면 구체적인 코드를 올리겠습니다.

이 게시물이 오래된 게시물인 것은 알지만 코어 3.0을 사용하여 비슷한 문제에 직면했을 때 우연히 발견했습니다. 누군가에게 도움이 되길 바랍니다.

@{
Layout = null;
ViewData["SampleString"] = "some string need in the partial";
}

<partial name="_Partial" for="PartialViewModel" view-data="ViewData" />

추가 데이터를 전달하는 가장 쉬운 방법은 기존 ViewData에 데이터를 추가하여 @Joel Martinez 노트로 볼 수 있도록 하는 것입니다.그러나 ViewData를 오염시키지 않으려면 RenderPartial에는 표시된 두 개의 인수 버전뿐만 아니라 세 개의 인수도 사용하는 방법이 있습니다.세 번째 인수는 ViewDataDictionary입니다.전달할 추가 데이터만 포함된 부분에 대해서만 별도의 ViewDataDictionary를 구성할 수 있습니다.

이것도 효과가 있을 겁니다.

this.ViewData.Add("index", index);

Html.RenderPartial(
      "ProductImageForm", 
       image, 
       this.ViewData
); 

동적 변수 ViewBag를 사용할 수 있습니다.

ViewBag.AnotherValue = valueToView;

언급URL : https://stackoverflow.com/questions/1169170/pass-additional-viewdata-to-a-strongly-typed-partial-view

반응형