1

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 助手?

4

1 回答 1

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();
}
于 2010-03-19T07:18:09.530 回答