asp.net - 将ASP.NET MVC放入WebForms页面

标签 asp.net asp.net-mvc asp.net-mvc-2

有什么方法可以使用MVC帮助器或其他方法将asp.net MVC操作的常规 View 呈现到旧的.aspx WebForm上?

最佳答案

免责声明:下面提出的解决方案是一个hack。

假设您具有以下 Controller :

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>

关于asp.net - 将ASP.NET MVC放入WebForms页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245009/

相关文章:

jquery - 打开日期选择器上的“今天”按钮

c# - <a> 标签刷新了我的 asp.net 页面

c# - 使用 HTML 帮助程序启动表单的首选方法是什么?

asp.net-mvc-2 - ASP.NET MVC 2. 无法创建接口(interface)实例

asp.net-mvc-2 - 是否有支持 ASP.NET MVC 2 区域功能的 MVC SiteMap 提供程序?

c# - 将字段集 "legend"设置为不可见

c# - 刷新 Azure 上的 HttpRuntime.Cache

asp.net-mvc - 如何使用 MVC 从另一个屏幕移动到另一个屏幕?

javascript - MVC 5 : jQuery nested tabs are not displaying properly

javascript - 使用 JSONP 在 javascript 小部件中导航