如何将MVC添加到现有的Web API项目中

时间:2016-07-12 21:54:53

标签: asp.net-mvc asp.net-web-api

目前我有一个web api项目,我想添加一个可以创建用户和修改权限的管理页面,但是似乎几乎没有关于如何将MVC添加到现有web api项目的文档。

4 个答案:

答案 0 :(得分:10)

我在使用WebApi而不是MVC的项目中遇到了类似的问题,并使用以下方法稍后添加MVC:

  • 我使用nugget将Microsoft.AspNet.Mvc以及Microsoft.AspNet.Web.Optimization添加到项目中
  • 我将一个RouteConfig文件(由MVC模板创建)添加到App_Start文件夹,并在Global.asax.cs类中执行方法RegisterRoutes,再次与新的MVC项目对应。这允许控制器被调用。
  • 我添加了我的Controller(Home)和一个新的View(Index.cshtml)。添加View创建了Shared / _Layout.cshtml以及_ViewStart.cshtml文件

我启动项目后,导致我收到以下错误消息:

  

视图必须来自WebViewPage或WebViewPage< TModel>

  • 在研究问题后,我发现了一篇关于msdn的文章,描述了一个解决方案。 缺少的组件是Views文件夹中的Web.config文件。您可以再次从现有的MVC项目中复制文件
  • 在Web.config文件中,我不得不从System.web.webPages.razor部分删除旧项目默认命名空间,并将其替换为我自己的默认命名空间

完成后我可以使用标准的MVC控制器。

答案 1 :(得分:1)

对于使用 .Net Core 3 的任何人,请使用此模板配置 Startup.cs

注意,我已经注释掉了现有的Web Api代码。

callable_func = cache_page(timeout = cls.get_timeout(), cache = cls.cache_name)
return callable_func(view)

答案 2 :(得分:0)

.netcore 2.1项目的更新

  1. 通过NuGet安装 Microsoft.AspNetCore.Mvc
  2. 创建 Views 文件夹(您现有的API项目中已经有 controller 文件夹)
  3. 修改 Startup.cs 中的ConfigureServices方法并添加以下行:

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
  4. Startup.cs 中修改Configure方法并添加默认地图路线:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    

答案 3 :(得分:0)

我在一个使用 WebApi 但没有使用 MVC 的项目中遇到了类似的问题,并使用以下方法稍后添加 MVC:

  1. ConfigureServices

    中添加services.AddControllersWithViews();
  2. 并在Configure中定义MVC Routing

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });