Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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
C# 在web api项目中使用asp.net mvc_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 在web api项目中使用asp.net mvc

C# 在web api项目中使用asp.net mvc,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我找到的所有链接都谈到在mvc项目中使用Web API 但我想要相反的结果 我找不到有关该场景以及如何将mvc集成到WebAPI项目中的任何信息 有可能吗?它很简单,我在几个站点上使用它-创建一个新区域(我使用“UI”)并将其视为一个简单的MVC站点 您必须根据以下内容修复默认路由:我正在使用Web API从空的ASP.Net项目设置启动这些说明 安装Microsoft.AspNet.MvcNuget软件包 以及在global.asax中配置Web API的任何其他MVC配置。如果愿意,您可以在

我找到的所有链接都谈到在mvc项目中使用Web API

但我想要相反的结果

我找不到有关该场景以及如何将mvc集成到WebAPI项目中的任何信息


有可能吗?

它很简单,我在几个站点上使用它-创建一个新区域(我使用“UI”)并将其视为一个简单的MVC站点


您必须根据以下内容修复默认路由:

我正在使用Web API从空的ASP.Net项目设置启动这些说明

  • 安装
    Microsoft.AspNet.Mvc
    Nuget软件包

  • 以及在global.asax中配置Web API的任何其他MVC配置。如果愿意,您可以在单独的类中进行此配置,并从global.asax调用它

  • 例如:

    RouteTable.Routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
    
  • 将MVC控制器添加到
    controllers
    文件夹。这应该是一个单独的文件夹,用于存放Web API控制器,并且不必称为
    控制器

  • 创建一个
    视图
    文件夹。为了使这更简单、更省时,可以在一次性解决方案中创建一个MVC项目,并将其
    视图
    文件夹复制到上面。特别是,您要复制
    Views\Shared
    文件夹中的任何文件,以及
    Views
    文件夹中的所有
    .config
    文件。如果没有这些,您的MVC视图将无法工作

  • 如果您为#4创建了一次性项目,请查看其web.config,尤其是
    设置

  • 如果你没有,这是我的一部分:

    <system.web>
       <authentication mode="None" />
       <compilation debug="true" targetFramework="4.5.2" />
       <httpRuntime targetFramework="4.5.2" />
    </system.web>
    
    
    .  开始时,您不需要区域,如果您以后决定添加区域,可以很容易地将现有MVC代码移动到一个或多个新区域中


    有关更多信息,请阅读。是的,这篇文章是关于Web表单的,但是说明和概念是一致的。另外,Web表单只是一个带有Web表单的ASP.Net项目,就像Web API一样

    你能解释一下为什么要把它们混在一起吗?也许您正在尝试实现的实际示例会有所帮助?假设您的Web API托管在IIS中,您完全可以将它们放在同一个项目中。即使你是自我托管,你仍然可以。这可以通过谷歌搜索“WebAPI mvc同一项目”来回答。每一个结果都在谈论如何做到这一点。尽管这肯定是可能的,但我想问的问题是:为什么?如果你能让它变得容易,你为什么要让它变得困难呢。当您创建MVC应用程序时,VisualStudio为您做了很多事情。如果你选择忽略这一点,你必须自己完成所有这些步骤(比如启动应用程序、配置路由、过滤器等等)@Amy你读过你发布的链接的解决方案了吗?我不这么认为。我将把它粘贴到这里:“…下面的文章将逐步在MVC应用程序中实现ASP.NET Web API…”我并没有询问在MVC应用程序中使用Web API的问题。我问我如何在一个WebAPI项目中使用MVC,因为我们想用razor来处理简单的表单,而不是做SPA。。。这是开销。@hbulens我无法创建MVC项目,因为我们已经有一个旧的web api。创建一个区域不是必需的。当然不是必需的,但很有用,因为它允许您在WebAPI和UI中使用具有分离功能的重复控制器。