我有一个Web API应用程序,它使用一个控制器来返回从文件中读取的数据。
所以我所使用的只是MVC的C(控制器)部分。我没有视图,我也没有使用模型 - 我在App_Data文件夹中存储和检索数据。
我知道这是一个相当简单的解决方案,但似乎我只需要C而不是MVC。我错过了什么吗?
答案 0 :(得分:7)
Model-View-Controller is a design pattern,用于帮助构建具有GUI的应用程序。 ASP.NET MVC是一个框架,可以帮助您根据此设计模式构建Web应用程序。
Web API与MVC设计模式无关。它是单独开发的,临时分布在相同的伞形名称下,现在又是一个自己的框架:http://www.asp.net/web-api
一些项目模板仍在创建"模型"和#34;意见"项目中的目录意味着您使用的是过时的项目模板,或者假设您希望在一个项目中使用MVC和Web API。
答案 1 :(得分:3)
CodeCaster的答案已经很好地解释了你的问题背后的“理论”。虽然,我会给出答案,因为我在几个月前偶然发现并花了一些时间来弄清楚最近创建的Web API项目为什么还有ASP.NET MVC应用程序所具有的Views和所有其他项目。 / p>
事情是在Visual Studio 2013中,有Web应用程序模板。选择此选项后,将打开一个窗口。在此窗口中,有一个用于创建Web Api的选项。这个问题依赖于此。当您在窗口中选择Web Api时(当然这是您想要的),由于某种原因,它还在“添加文件夹和核心参考”中标记 MVC 的选项/强>更糟糕的是,复选框已被禁用,因此您无法“取消选中”它(如此奇怪):这就是它的样子:
如果此时点击“确定”,则会使用所有MVC引用创建API。可能不是你想要的。
因此,要创建一个“纯”Web API,它只包含与Web API相关的文件和结构的引用,这就是您需要做的:
选择清空模板,然后选择 Web API 选项。 :
答案 2 :(得分:2)
请考虑您的控制器具有将从前端应用程序调用的操作。作为该调用的结果发送的数据可以被认为是模型。然后,前端应用程序可以使用该模型来显示视图。但你也许也不是那种。作为开发人员,如果需要,可以正确使用MVC模式。
答案 3 :(得分:1)
随着项目规模/复杂性的增加,以及所讨论的场景反映了模式背后的假设,几乎所有的软件模式都开始变得最有意义。有许多琐碎的场景,其中模型和视图组件是隐式的,由框架本身提供或者根本不需要。 MS ASP.NET MVC本质上做的是提供一个框架,在MS Web生态系统中实现基本的MVC模式。您是否需要使用各个功能(如EF建模,Razor视图)取决于您。
根据您的问题,您的要求主要是允许访问存储过程并执行基本数据转换(通过POST),然后将该数据作为JSON(通过GET)返回。单独的GET / POST请求有什么必要?根据您的问题,GET依赖于前面的POST请求。我建议创建中间JSON文件可能是不必要的,而只是查找数据并将其传回管道。
答案 4 :(得分:1)
我们是否应该将控制器操作返回的数据视为视图,而不是HTML视图的视图,设计模式不指定视图的类型。在我看来它仍然是MVC,模型仍然存在,你通常会创建你想要返回的数据模型,视图部分只是你的核心模型类的另一个模型或视图。