我有ASP.NET MVC 4项目。我想添加到这个MVC项目2 .aspx
另一个WebForms项目的页面。我有几个问题:
- 我应该在哪里复制这个
.aspx
文件,我应该怎么做 配置 我的
路线?
- 我该怎么说呢
.aspx
要使用的页面 ~/Shared/_Layout.chtml
作为一个 母版页?
- 另外这个 .aspx页面 使用 .ascx控制。我应该在哪里存放它们?
- 我应该如何修改 web.config文件?
我看过了 链接 张贴在 这个 问题,但他们似乎已经过时了。很多链接解释了如何将MVC添加到WebForms,但我一直在寻找。
任何有用的链接将不胜感激。谢谢!
解决方案:
事实证明,添加 的.aspx 页面到现有的 MVC 项目比将.mvc添加到.aspx更容易完成。对我来说最有趣的事情是在一个项目的范围内找出webforms和MVC 一 IIS上的运行时。
所以我做了什么:
- 添加 的.aspx 从另一个项目到的页面 根 我的 MVC 项目
- 创造了新的 母版页 为了我的 web表单 页面(右键单击项目 - >添加 - >新项目 - >母版页)
- 为了要做 主页 WF和 _Layout.chtml MVC的共享相同 掌握'观察' 我发现 这篇好文章 这允许你调用类似的东西 @ Html.RenderPartial() 内部方法 .aspx页面
以下代码提供了如何实现的信息 的RenderPartial WebForms中的方法:
public class WebFormController : Controller { }
public static class WebFormMVCUtil
{
public static void RenderPartial( string partialName, object model )
{
//get a wrapper for the legacy WebForm context
var httpCtx = new HttpContextWrapper( System.Web.HttpContext.Current );
//create a mock route that points to the empty controller
var rt = new RouteData();
rt.Values.Add( "controller", "WebFormController" );
//create a controller context for the route and http context
var ctx = new ControllerContext(
new RequestContext( httpCtx, rt ), new WebFormController() );
//find the partial view using the viewengine
var view = ViewEngines.Engines.FindPartialView( ctx, partialName ).View;
//create a view context and assign the model
var vctx = new ViewContext( ctx, view,
new ViewDataDictionary { Model = model },
new TempDataDictionary() );
//render the partial view
view.Render( vctx, System.Web.HttpContext.Current.Response.Output );
}
}
将它添加到.aspx页面的codebehind.cs。然后你可以从webforms中调用它,如下所示:
<% WebFormMVCUtil.RenderPartial( "ViewName", this.GetModel() ); %>
由于我只在所有页面中共享了“菜单”,因此我将其添加到部分视图中,然后将其调用 _Layout.chtml
@Html.Partial("_Menu")
并在 MasterPage.Master 喜欢这个:
<% WebFormMVCUtil.RenderPartial("_Menu", null ); %>
这就是它的全部。结果我的 _Layout.chtml 和 MasterPage.Master 使用相同的共享部分视图。我可以接受 的.aspx 页面只需浏览它们即可。如果路由系统存在一些问题,可以添加 routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
到App_Start中的routeConfig。
我使用的来源:
- 将asp net mvc与webforms结合使用
- 混合Web窗体和ASP.NET MVC
- MixingRazorViewsAndWebFormsMasterPages
- 如何在webform中包含局部视图
我希望以后能帮到别人。