Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MVC添加到ASP.NET网站_Asp.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

将MVC添加到ASP.NET网站

将MVC添加到ASP.NET网站,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我想向现有的网站项目(不是Web应用程序项目)添加MVC支持,并提出一些问题 为了获得VisualStudio的MVC优势,我似乎需要更新.csproj文件的节点。网站项目中没有csproj文件 似乎我需要在App\u code中创建模型和控制器文件夹。这是真的吗?我更喜欢将这些文件夹放在根目录下 对于视图我应该创建aspx和aspx.cs文件吗?这种设置是否支持cshtmlrazor文件 如有任何其他回复,我们将不胜感激。感谢ASP.NET MVC不支持网站模板,它只能是web应用程序。因此,

我想向现有的网站项目(不是Web应用程序项目)添加MVC支持,并提出一些问题

  • 为了获得VisualStudio的MVC优势,我似乎需要更新
    .csproj
    文件的
    节点。网站项目中没有
    csproj
    文件
  • 似乎我需要在
    App\u code
    中创建
    模型
    控制器
    文件夹。这是真的吗?我更喜欢将这些文件夹放在根目录下
  • 对于
    视图
    我应该创建
    aspx
    aspx.cs
    文件吗?这种设置是否支持
    cshtml
    razor文件

  • 如有任何其他回复,我们将不胜感激。感谢ASP.NET MVC不支持网站模板,它只能是web应用程序。因此,您无法将MVC功能添加到Web Forms project。

    如果您将Global.asax文件放在网站的根目录中,我以前见过这种方法。您的项目需要一种方法来识别和区分MVC请求和标准请求,如下所示:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute("Default",
            "{controller}.mvc/{action}/{id}",
            new { controller = "Home", action = "Index", id = "" }
        );
    }
    

    因此,应用程序中的MVC url可能如下所示:

    我相信如果您设置了一个新的MVC项目,并将web表单复制到新项目中,它们将按预期呈现

    我没有尝试过太多,但出于好奇,我在过去尝试过,web表单仍然呈现良好状态。我想这取决于你的项目的复杂性,这个方法是否有效


    这将涉及更改项目类型。

    对于asp.net MVC2及以上版本,MVC团队将核心功能划分为 三个不同的程序集,每个程序集都从通用系统扩展而来。Web程序集:

    • System.Web.Routing
    • System.Web.Abstractions
    • System.Web.Mvc
    通过这种分离,他们继续进行并使程序集“在中等信任的服务器环境中工作,并且可以进行bin部署”

    这个特性的一个优点是,运行MVC不需要特定的项目类型。您只需要程序集、一些目录和经过调整的web.config

    为此,只需将程序集放置在项目的本地bin文件夹中,并对这些程序集进行必要的引用。 完成此操作后,您就可以访问asp.net MVC

    以下是本书中的一些详细说明,可以帮助您入门:

    在现有Web表单应用程序中包括MVC

    向现有Web窗体应用程序添加ASP.NET MVC功能包括三个步骤 不同步骤:

    一,。添加对ASP.NET MVC需要的三个核心库的引用:System.Web.MVC、System.Web.Routing和System.Web.Abstracts

    二,。向应用程序添加两个目录:控制器和视图

    三,。更新Web.config以在运行时加载三个程序集,并注册UrlRoutingModule HttpModule

    以下是一些博客/网站,它们提供了一些更详细的场景,可以帮助您解决问题:


    祝你好运,希望这对你有所帮助。

    我已成功地将ASP.NET MVC 3添加到Webforms项目中,以下是一些建议:

    • 添加
      控制器
      作为单独的类库项目,并从Web表单Web项目添加对此项目的引用
    • 我试图获得VS MVC支持(如goto controller等),但将GUID
      {E53F8FEA-EAE0-44A6-8774-FFD645390401}
      添加到
      .csproj
      文件没有帮助
    • 是的,您可以添加引用以从类库获取会话。如果您想编写单元测试,您总是可以模拟它
    • 视图
      文件夹添加到根目录
    • App\u code
    • 如果您正在使用Razor,则需要添加
      System.Web.Razor
      System.Web.WebPages
      参考
    • 如果您使用的是Razor,请按照以下步骤更新
      Web.config
    • 请记住,您可以将服务器控件添加到视图中,只要它们不使用回发(我必须使用webforms项目中的许多服务器控件)

    我的任务是更新(但不幸的是没有重新编写)遗留的.Net 3.5、VB.Net(ughh)webforms、web站点项目,我成功地升级到4.0并添加了MVC3支持(使用单独的代码兼容文件夹来支持C#,耶!),它工作得很好

    @DotnetDude指令确实有效,但要注意几件事

    (1) 添加Razor支持时,这是在Views/Web.config文件中完成的,而不是在项目根目录中的Web.config文件中完成的

    (2) 如果您在视图目录之外添加了Razor文件(.chtml或.vbhtml),vs.net将使用以下值更新根web.config

    <appSettings>
      <add key="webpages:Enabled" value="true" />
    </appSettings>
    
    
    

    不太好。此设置允许直接浏览razor页面,在我的情况下,当设置为TRUE时,会导致所有内容中断。话虽如此,我只是在我的视图子文件夹中使用razor页面,但是我发现很好的是从我的.aspx页面向App_代码目录中定义的控制器进行AJAX调用,这样我就可以使一个大部分都是回发的应用程序现代化,而C#可以访问VB.NET编写的数据层。

    你需要切换到一个web应用程序,AFAIK.@SLaks-我的理解是,切换到web应用程序是一种更干净的方式,但这不是必需的。现有的项目确实非常复杂。我可以将MVC项目添加到它中,但是我不会创建新的MVC项目,而是将webforms项目复制到它中,除非我真的需要。如果我最终朝那个方向走,你有什么资源可以帮助我吗?是的,这是可能的。然而,我很想知道我是否可以在一个网站项目中获得VS MVC goodness(以及前面列出的其他问题),你不必区分MVC&