如果MyControl.ascx是直接继承Html.RenderPartial("~/Views/Payments/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助手?
答案 0 :(得分:0)
从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();
}