我正在使用MVC3和Razor开发一个相当大的Web应用程序的一个新区域,其中应用程序的其余部分是基于ASP.NET 4 Web窗体。我是否可以在此应用程序中包含我的MVC组件,以及如何实现此目的?
答案 0 :(得分:4)
我们的经验是,WebForms和MVC在同一个应用程序中并行运行,但并没有混合。换句话说,每个页面可以是WebForms或MVC,但它不能很容易地包含两者的元素。我发现的两个主要解决方案是:
我们使用后一种方法。
答案 1 :(得分:3)
http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc
这应该让你走上正确的道路。如果是我个人,我会在您的解决方案中添加一个新项目,即MVC,然后您可以在IIS / MVCApp中配置虚拟目录
答案 2 :(得分:0)
我正在使用像这样的类将MVC视图嵌入到webforms页面中。将尝试反方向
public class HelperFactory
{
private class FakeController : Controller
{
}
private class FakeView : IView
{
public void Render( ViewContext viewContext, TextWriter writer )
{
throw new NotImplementedException();
}
}
public static HtmlHelper<TModel> GetHelper<TModel>()
{
//HttpContextBase context = new HttpContext( HttpContext.Current );
FakeController controllerBase = new FakeController();
RouteData rd = new RouteData();
rd.Values.Add( "controller", "Fake" );
RequestContext requestContext = new RequestContext( new HttpContextWrapper( HttpContext.Current ), rd );
ControllerContext fakeContext = new ControllerContext( requestContext, controllerBase );
ViewDataDictionary vdd = new ViewDataDictionary();
ViewContext viewCtx = new ViewContext( fakeContext, new FakeView(), vdd, new TempDataDictionary(), requestContext.HttpContext.Response.Output );
return new HtmlHelper<TModel>( viewCtx, new ViewPage() );
}
}