渲染派生局部视图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