我想将MVC支持添加到现有的Website项目(而不是Web应用程序项目),并且有几个问题。
.csproj
文件的<ProjectTypeGuids>
节点。网站项目中没有csproj
文件。 Models
中创建Controllers
和App_Code
文件夹。这是真的?我更喜欢将这些文件夹放在根目录下。Views
,我应该创建aspx
和aspx.cs
文件吗?这种设置是否支持cshtml
剃刀文件?任何其他回复,我们都感谢。谢谢
我已经成功地将ASP.NET MVC 3添加到Webforms项目中,下面是一些建议:
Controllers
添加为单独的类库项目,并从Web表单Web项目添加对此项目的引用{E53F8FEA-EAE0-44A6-8774-FFD645390401}
添加到.csproj
文件没有帮助。 Views
文件夹添加到根目录Models
内添加App_Code
System.Web.Razor
和System.Web.WebPages
参考Web.config
更新post使用asp.net MVC2及更高版本,MVC团队将核心功能分为三个不同的程序集,每个程序集都从通用的System.Web程序集扩展而来:
通过这种分离,他们继续进行组装,使程序集“在中等信任度服务器环境中工作并且可在bin上部署”。
关于此功能的优点之一是,您不必具有特定的项目类型即可运行MVC。您只需要程序集,一些目录和经过调整的web.config。
为此,您只需要将程序集放置在项目的本地bin文件夹中,并为这些程序集提供必要的引用。完成此操作后,您就可以访问asp.net MVC。
这里是Wrox Professional ASP.NET MVC 1.0书中的一些详细说明,应该可以帮助您入门:
包括现有Web窗体应用程序中的MVC
向现有的Web Forms应用程序中添加ASP.NET MVC功能包括三个不同的步骤:
1。添加对ASP.NET MVC所需的三个核心库的引用:System.Web.Mvc,System.Web.Routing和System.Web.Abstractions。
2。将两个目录添加到您的应用程序:Controllers和Views。
3。更新Web.config以在运行时加载三个程序集,并注册UrlRoutingModule HttpModule。
作为参考,这里有一些博客/站点,其中包含一些更详细的场景,可能会对您有所帮助:
Mixing ASP.NET Webforms and ASP.NET MVC
ASP.NET WebForms and ASP.NET MVC in Harmony
祝您好运,希望对您有所帮助。
我相信,如果您建立了一个新的MVC项目并将Web表单复制到该新项目中,它们将按预期呈现。
我没有做太多的尝试,但是过去出于好奇,我尝试过,并且网络表单仍然可以正常显示。我猜这取决于您的项目是否可以使用这种方法。
这将涉及更改项目类型。
过去,如果您将Global.asax文件放在网站的根目录中,我已经看到了这项工作。您需要为项目提供一种识别MVC请求和标准请求的方法,例如:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("Default",
"{controller}.mvc/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
因此,您应用中的MVC网址可能看起来像:http://www.mywebsite.com/mycontroller.mvc/View/5
我的任务是更新(但遗憾的是不重写)旧版.Net 3.5,VB.NET(ughh)Web表单,网站项目,并且我成功升级到4.0,并增加了MVC3支持(使用单独的代码补全文件夹来支持C#,是的!),效果很好。
@ DotnetDude指令确实有效,但要注意以下几点...
((1)添加Razor支持时,这是在Views / Web.config文件而不是项目根目录中的web.config文件中完成的。
((2)如果您确实在Views目录的外部添加了Razor文件(.chtml或.vbhtml),则vs.net将使用以下值更新根web.config
<appSettings>
<add key="webpages:Enabled" value="true" />
</appSettings>
不好。此设置允许直接浏览剃须刀页面,在我的情况下设置为TRUE时,会导致一切中断。话虽如此,我只在Views子文件夹中使用剃须刀页面,但是我发现不错的是从.aspx页面向App_Code目录中定义的控制器进行AJAX调用,从而使我几乎可以将所有回发的应用程序现代化,和C#访问VB.NET书面数据层。
ASP.NET MVC不支持网站模板,它只能是Web应用程序。因此,您不能将MVC功能添加到Web窗体项目中。