【发布时间】:2011-05-26 01:02:30
【问题描述】:
我正在使用 MVC3 和 Razor 开发一个相当大的 Web 应用程序的一个新领域,该应用程序的其余部分是基于 ASP.NET 4 Web 窗体的。我可以在这个应用程序中包含我的 MVC 组件吗?我必须做些什么来实现这一点?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3
我正在使用 MVC3 和 Razor 开发一个相当大的 Web 应用程序的一个新领域,该应用程序的其余部分是基于 ASP.NET 4 Web 窗体的。我可以在这个应用程序中包含我的 MVC 组件吗?我必须做些什么来实现这一点?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3
我们的经验是,WebForms 和 MVC 在同一个应用程序中可以很好地并行工作,但不能混合使用。换句话说,每个页面都可以是 WebForms 或 MVC,但它不能很容易地包含两者的元素。我发现的两个主要解决方法是:
我们使用后一种方法。
【讨论】:
http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc
这应该会让你走上正确的道路。如果是我个人,我会在您的 MVC 解决方案中添加一个新项目,然后您可以在 IIS /MVCApp 中配置一个虚拟目录
【讨论】:
/mvc),因为这些是相对于应用程序而非虚拟目录进行解析的。
我正在使用类似这样的类将 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() );
}
}
【讨论】: