我在angularjs和MVC5之间传输数据有些困惑。我正在创建单页应用程序 (SPA)。
- 使用 angularjs 的最佳方式是什么?是 MVC 控制器还是 MVC API?
- 我在这里读到api对SPA有好处。那么,我需要为 API 构建一个不同的项目吗?
- Angularjs 与 MVC 的异步通信怎么样?
我没有找到正确的工作方向。我熟悉 mvc,但不熟悉 API。所以,请指导我一个正确的方法!
提前致谢
首先,对于当前版本的Visual Studio(2013),"Web form"项目和"mvc"项目之间没有区别。只有一个Web应用程序项目,您可以在里面放置任何您想要的东西。
现在,根据我的经验,解决您的问题的一种很好且干净的方法是创建普通的MVC控制器来呈现包含angularJS应用程序的剃刀视图,并为ajax方法的RESTful接口创建WebAPI控制器。
在 angularJS 中,你真的不需要手动执行 ajax 调用。还有一种更方便、更强大的方式:资源。它们还可以很好地与WebAPI设计配合使用,因为WebAPI控制器与单一类型的对象(即客户)一起工作,并且通过HTTP VERBS允许您执行CRUD。例如:
// assume we have a backend repository that handles the data
public HttpResponseMessage Get()
{
return this.Request.CreateResponse(HttpStatusCode.OK, this.repository.GetAllCustomers());
}
public HttpResponseMessage Post(Customer customer)
{
var modifiedCustomer = this.repository.Update(customer);
this.repository.SaveChanges();
return this.Request.CreateResponse(HttpStatusCode.OK, modifiedCustomer);
}
此方法查询所有可用客户并返回它们。您在此处没有定义是返回 JSON 还是 XML:WebAPI 框架读取 WebAPI 请求的 HTTP 标头,并根据客户端的请求序列化数据。对于你可能正在使用的 JSON,它通过定义的默认 JSON 序列化程序执行序列化。您可以覆盖此设置以更改 JSON 的创建方式,一种常见的方法是将 JSON.NET 与自定义设置一起使用。
AngularJS资源用于映射单个URL,并在内部处理所有动词,并向您公开$save,$query,$get等方法,因此它们很好地结合在一起。例如:
var customerRes = $resource('/customers');
var currentCustomers = customerRes.query(function(){ // query is mapped to the GET verb
currentCustomers[0].email = "foo@baz.bar";
currentCustomers[0].$save(); // default mapped to the POST verb
});
我建议您查看文档和示例以获取更多详细信息。
您可以将 MVC 控制器函数与异步和 MVC API 一起使用。在控制器异步方法中,您需要手动处理所有响应,因为 API 具有内置的许多功能。在控制器异步方法中,应用程序将处理自调用。当然,API 为您提供了更大的灵活性来处理不同的应用程序类型。
当您的 MVC 应用程序具有适用于不同类型的应用程序的 API 时,您需要担心的更多事情,例如移动应用程序等。1. 池服务。2. IIS 中每个工作进程的线程数。当应用程序中具有不同类型应用程序的 API 或异步方法时,这些将定义应用程序的规模。
1)您可以创建简单Controller
- 并在内部创建将返回JsonResult
的方法 并通过AJAX
调用Angular的方法
2) 是 - 如果你想要构建API
- 你需要创建新的项目类型的WebAPi
(现在是 v 2.0) - 但你可以使用 SPA 在一个solution
中创建它
3)你可以打电话ajax
asynchronous
- 这不是问题