Визуализация производного частичного представления с помощью Html.RenderPartial
Призвание 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?
1 ответ
С точки зрения 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();
}