문제

부름 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();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top