IT TIP

다른 컨트롤러에서 부분보기 렌더링

itqueen 2020. 11. 26. 20:37
반응형

다른 컨트롤러에서 부분보기 렌더링


컨트롤러 A뷰에서 다른 컨트롤러 B 의 부분 뷰 를 렌더링하는 방법이 있습니까?

편집 : 두 개의 컨트롤러에만 적합한 부분보기를 작성했으며 두보기 폴더에 복사하고 싶지 않습니다.
어떤 일이 발생한 후가 아니라 뷰가 렌더링 될 때마다 부분 뷰가 표시되기를 원합니다.


  1. 뷰를 Views / Shared 폴더에 넣어 컨트롤러간에 뷰를 공유 할 수 있습니다. 그런 다음 각 컨트롤러는 해당 뷰를 이름으로 렌더링 할 수 있습니다.
  2. 를 사용하여 현재보기 내에서 부분보기 ((1)에서와 같이 컨트롤러간에 공유 할 수 있음)를 렌더링 할 수 있습니다 Html.Partial().
  3. 를 사용 Html.Action()하여 다른 컨트롤러에서 작업을 호출하고 현재보기 내에서 결과를 렌더링 할 수 있습니다.
  4. 페이지가 렌더링 된 후 AJAX를 사용하여 다른 컨트롤러에서 부분보기를로드 할 수 있습니다.

@Html.Partial("~/Views/ControllerB/Index.cshtml")

예,

return PartialView("/path/view.cshtml");

경로 부분 만 해결하면됩니다.

또는 뷰 / 공유에 부분 뷰를 넣은 다음 반환 할 수 있습니다.

return PartialView("view.cshtml");

@model YourModelNamesapce.ModelName
@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_LayoutForPartialViews.cshtml";
}
<table>
    <tr>
       <td>
          @Html.LabelFor(model => model.fieldname)
       </td>
       <td>
          @Html.DisplayFor(model => model.fieldname)
       </td>
    </tr>
    <tr>
       <td>@Html.Action("PartialViewAction", "Controller", new { id = Model.id })</td>
    </tr>
</table>

이 스레드가 동일한 질문을 검색하지만 답변이 작동하지 않는 것을 발견했을 때의 참고 사항입니다. Orchard CMS 모듈 에서는 Pittfall이 게시 한 깔끔한 솔루션을 사용할 수 없으며 상대 경로를 사용하여 부분보기를 반환해야합니다. 컨트롤러가 있다고 가정 해 보겠습니다.

Controllers/SiteController.cs

부분보기를 반환하고 싶습니다.

Shared/MessageList/Items

그런 다음 행동 방법에서 작성해야합니다.

return PartialView("../Shared/MessageList/Items");

참고 URL : https://stackoverflow.com/questions/7968234/render-partial-view-from-other-controller

반응형