html.renderpartial을 사용하여 파생 된 부분보기를 렌더링합니다
-
20-09-2019 - |
문제
부름 Html.RenderPartial("~/Views/Payments/MyControl.ascx");
MyControl.Ascx가 직접 상속되는 컨트롤 인 경우보기에서 작동합니다. System.Web.Mvc.ViewUserControl
.
그러나 제어가 상속되는 경우 에서 파생되는 새로운 수업 System.Web.Mvc.ViewUserControl
, 전화 Html.RenderPartial("~/Views/Payments/MyDerivedControl.ascx");
실패, 그러한 견해가 존재하지 않는다고보고합니다.
예제 도출 System.Web.Mvc.ViewUserControl
:
class MyDerivedControl : System.Web.Mvc.ViewUserControl
{
public Method()
{
ViewData["SomeData"] = "test";
}
}
해결 방법이 있습니까, 아니면 다른 방법이 있습니까? 아마도 HTML 도우미?
해결책
MVC의 관점에서 볼 때보기가 데이터를 제공하는 것은 좋은 디자인이 아닙니다. 일반적으로 이것은 컨트롤러의 책임입니다. 컨텍스트 와이 데이터가 나타내는 내용에 따라 HTML 도우미 또는 작업 필터 작성을 사용할 수 있습니다. 다음은 사용자 정의 작업 필터가있는 예입니다.
public class SomeDataActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
filterContext.Controller.ViewData["SomeData"] = "test";
}
}
그런 다음이 필터로 작업을 장식하십시오.
[SomeDataActionFilter]
public ActionResult Index()
{
return View();
}
제휴하지 않습니다 StackOverflow