Отказ от ответственности: Предлагаемое ниже решение является хаком.
Предположим, что у вас есть следующий контроллер:
public class HomeController : Controller
{
[ChildActionOnly]
public ActionResult Foo()
{
return View();
}
}
и соответствующий частичный (Foo.ascx
).
И теперь на устаревшей странице WebForms вы хотели использовать это действие.Вот как вы могли бы продолжить:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script type="text/C#" runat="server">
private class DummyController : Controller { }
public HtmlHelper Html { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
var httpContext = new HttpContextWrapper(Context);
var controllerContext = new ControllerContext(
httpContext,
new RouteData(),
new DummyController()
);
var viewContext = new ViewContext(
controllerContext,
new WebFormView("Views"),
new ViewDataDictionary(),
new TempDataDictionary(),
TextWriter.Null
);
Html = new HtmlHelper(viewContext, new ViewPage());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%= Html.Action("About", "Home") %>
</div>
</form>
</body>
</html>