ASP.NET MVC에서 부분보기 용 컨트롤러 만들기
부분보기에 대한 개별 컨트롤러 및 모델을 어떻게 생성 할 수 있습니까? 이 부분보기를 사이트의 어느 곳에 나 배치 할 수 있으므로 자체 컨트롤러가 필요합니다. 나는 현재 부분적으로 렌더링하고 있습니다.
@Html.Partial("_Testimonials")
왜 사용하지 Html.RenderAction()
않습니까?
그런 다음 모든 컨트롤러에 다음을 넣을 수 있습니다 (새 컨트롤러를 만들 수도 있음).
[ChildActionOnly]
public ActionResult MyActionThatGeneratesAPartial(string parameter1)
{
var model = repository.GetThingByParameter(parameter1);
var partialViewModel = new PartialViewModel(model);
return PartialView(partialViewModel);
}
그런 다음 새 부분보기를 만들고 PartialViewModel
상속 된 항목을 가질 수 있습니다.
Razor의 경우보기의 코드 블록은 다음과 같습니다.
@{ Html.RenderAction("Index", "Home"); }
WebFormsViewEngine의 경우 다음과 같습니다.
<% Html.RenderAction("Index", "Home"); %>
나라면 단일 액션으로 새 컨트롤러를 만든 다음 Partial 대신 RenderAction을 사용합니다.
// Assuming the controller is named NewController
@{Html.RenderAction("ActionName",
"New",
new { routeValueOne = "SomeValue" });
}
자체 컨트롤러가 필요하지 않습니다. 당신이 사용할 수있는
@Html.Partial("../ControllerName/_Testimonials.cshtml")
이를 통해 모든 페이지에서 부분을 렌더링 할 수 있습니다. 상대 경로가 올바른지 확인하십시오.
가장 중요한 것은 생성 된 작업이 부분보기를 반환해야한다는 것입니다. 아래를 참조하십시오.
public ActionResult _YourPartialViewSection()
{
return PartialView();
}
컨트롤러가 필요하지 않으며 .Net 5 (MVC 6)를 사용할 때 부분보기를 비동기로 렌더링 할 수 있습니다.
@await Html.PartialAsync("_LoginPartial")
또는
@{await Html.RenderPartialAsync("PartialName");}
또는 .net core 2.1을 사용하는 경우> 다음을 사용할 수 있습니다 .
<partial name="Shared/_ProductPartial.cshtml"
for="Product" />
Html.Action은 잘못 설계된 기술입니다. 페이지 컨트롤러에서는 부분 컨트롤러에서 계산 결과를받을 수 없기 때문입니다. 데이터 흐름은 페이지 컨트롤러 => 부분 컨트롤러입니다.
WebForm UserControl (*. ascx)에 더 가깝게하려면 다음을 수행해야합니다.
페이지 모델 및 부분 모델 만들기
페이지 모델의 속성으로 부분 모델 배치
- 페이지보기에서 Html.EditorFor (m => m.MyPartialModel) 사용
- 적절한 부분보기 만들기
- Create a class very similar to that Child Action Controller described here in answers many times. But it will be just a class (inherited from Object rather than from Controller). Let's name it as MyControllerPartial. MyControllerPartial will know only about Partial Model.
- Use your MyControllerPartial in your page controller. Pass model.MyPartialModel to MyControllerPartial
- Take care about proper prefix in your MyControllerPartial. Fox example: ModelState.AddError("MyPartialModel." + "SomeFieldName", "Error")
- In MyControllerPartial you can make validation and implement other logics related to this Partial Model
In this situation you can use it like:
public class MyController : Controller
{
....
public MyController()
{
MyChildController = new MyControllerPartial(this.ViewData);
}
[HttpPost]
public ActionResult Index(MyPageViewModel model)
{
...
int childResult = MyChildController.ProcessSomething(model.MyPartialModel);
...
}
}
P.S. In step 3 you can use Html.Partial("PartialViewName", Model.MyPartialModel, <clone_ViewData_with_prefix_MyPartialModel>). For more details see ASP.NET MVC partial views: input name prefixes
참고URL : https://stackoverflow.com/questions/6287015/create-controller-for-partial-view-in-asp-net-mvc
'Program Tip' 카테고리의 다른 글
소켓이 C #에서 연결 / 연결 해제되었는지 확인하는 방법은 무엇입니까? (0) | 2020.12.07 |
---|---|
window, window.top 및 window.parent의 차이점은 무엇입니까? (0) | 2020.12.07 |
미디어 플레이어 루핑 : Android (0) | 2020.12.07 |
개수 별 SQL 순서 (0) | 2020.12.07 |
활성 레코드 마이그레이션 레일의 has_many, belongs_to 관계 4 (0) | 2020.12.07 |