调用从一个视图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