【发布时间】:2016-07-03 09:23:03
【问题描述】:
我最近开始研究 MVC 应用程序。然而,我的第一个计划是在同一个解决方案中创建两个单独的项目。一个是 asp.net MVC Web 应用程序,第二个是 asp.net WebAPI。这样我的 Web 应用程序将与 Web API 对话,Web API 作为回报将向应用程序发送 JSON 响应,该应用程序将被转换为 View Model for View。
工作流程图:
随着我研究的深入,我了解到 API 控制器和控制器都合并到 MVC 5 中的单个控制器类中。所以我的问题是如何在 MVC 5 中实现上述工作流程。
MVC 5 工作流程图
所以我在 MVC 5 中遇到了问题,或者我无法完全理解它,例如:
用户模型
public class UserModel
{
Public int UserId {get;set;}
Public string Username {get;set;}
}
用户控制器
[HttpGet()]
public IActionResult GetUser(int id)
{
// do some work
return View(userObject);
}
查看
@model UserModel
<h1>@Model.Username</h1>
但是当我从移动设备调用上述方法时,它会给我呈现的 html,这对我来说没有用,所以我需要在同一个控制器中创建另一个方法,在该控制器中以 JSON 格式返回数据。
[HttpGet()]
public IActionResult ApiGetUser(int id)
{
// do some work
return JSONResponse.. ;
}
修改方法:
[HttpGet()]
public IActionResult GetUser(int id)
{
// calling api get user method
ApiGetUser(int id); // return json
// do some work to convert json into ModelObject
return View(userObject);
}
如果任何一个移动应用程序需要数据,它可以调用 m APIGetUser 方法,但在这种情况下,对我来说它很乏味,并且不会在同一个类中添加额外的方法。所以我的基本问题是我对流程的理解是错误的,还是我遗漏了一些东西,因为如果下面提到的工作流程是正确的,我会更喜欢第一个作为其单独的 WebAPI 项目并且易于维护?
【问题讨论】:
-
你需要 MVC 吗?如果为移动应用构建,您可以只使用 WeApi,无需 mvc 和 razor。
-
先生,我有一个可以在基于移动设备和基于网络的应用程序上运行
-
我的意思是基于移动的移动应用程序、混合移动应用程序、使用 Cordova 或 Secha、离子等构建...
-
无论如何,在您的第一个图表中,您已经使用 web api 来返回 json。你的 mvc 控制器可以返回 json。
-
你需要弄清楚/决定的是; API 是您功能的核心吗?如果您希望您的 MVC 应用程序始终使用(Web)API - 那么我会说您应该拆分它们并让您的 MVC 请求来自您的 API,因为这意味着您将能够更改 MVC 实现而不影响您的 API 实现.关注点分离等等。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-mvc-5