創(chuàng)建兩個項目
首先,我們需要創(chuàng)建兩個項目,一個是MVC項目,另一個是WebAPI項目。這兩個項目將用于實現(xiàn)跨域調(diào)用的功能。MVC前端代碼在MVC項目的前端代碼中,我們需要編寫一段JavaScript代碼來調(diào)用Web
首先,我們需要創(chuàng)建兩個項目,一個是MVC項目,另一個是WebAPI項目。這兩個項目將用于實現(xiàn)跨域調(diào)用的功能。
MVC前端代碼
在MVC項目的前端代碼中,我們需要編寫一段JavaScript代碼來調(diào)用WebAPI的方法。具體的代碼如下所示:
```javascript
$.ajax({
url: "http://localhost:5000/api/method",
method: "GET",
success: function(response) {
// 處理返回的數(shù)據(jù)
},
error: function(error) {
// 處理錯誤
}
});
```
在上述代碼中,我們使用了jQuery的AJAX方法來發(fā)送GET請求到WebAPI的方法。需要注意的是,URL應該替換為你實際的WebAPI地址。
在WebAPI中配置跨域
為了使MVC能夠跨域調(diào)用WebAPI的方法,我們需要進行一些配置。在WebAPI項目的根目錄下,新建一個類,并在需要跨域的方法前面添加跨域操作的特性。具體的代碼如下所示:
```csharp
public class EnableCrossOriginAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
("Access-Control-Allow-Origin", "*");
base.OnActionExecuting(filterContext);
}
}
[EnableCrossOrigin]
public IHttpActionResult Method()
{
// 處理方法邏輯
}
```
上述代碼中,我們創(chuàng)建了一個名為`EnableCrossOriginAttribute`的特性類,它繼承自`ActionFilterAttribute`。在該特性類中,我們通過設置響應頭的方式實現(xiàn)了跨域訪問。然后,在需要跨域的方法上添加了`EnableCrossOrigin`特性,以啟用跨域訪問。
在Controller中調(diào)用WebAPI方法
在MVC項目的Controller中,我們可以使用HttpClient來調(diào)用WebAPI的方法。需要注意的是,我們需要定義一個接收數(shù)據(jù)的實體類來接收返回的數(shù)據(jù)。具體的代碼如下所示:
```csharp
public class DataModel
{
public string Name { get; set; }
public int Age { get; set; }
}
public async Task
{
using (HttpClient client new HttpClient())
{
HttpResponseMessage response await ("http://localhost:5000/api/method");
if ()
{
DataModel data await
// 處理返回的數(shù)據(jù)
}
else
{
// 處理錯誤
}
}
return View();
}
```
在上述代碼中,我們首先定義了一個名為`DataModel`的實體類來接收返回的數(shù)據(jù)。然后,我們使用HttpClient發(fā)送GET請求到WebAPI的方法,并根據(jù)返回的狀態(tài)碼來處理返回的數(shù)據(jù)或錯誤。
A調(diào)用B的Demo
最后,我們來看一個完整的示例,其中A調(diào)用B的Demo。在這個示例中,我們假設A是MVC項目,B是WebAPI項目。
A項目的前端代碼:
```javascript
$.ajax({
url: "http://localhost:5000/api/method",
method: "GET",
success: function(response) {
// 處理返回的數(shù)據(jù)
},
error: function(error) {
// 處理錯誤
}
});
```
B項目的Controller代碼:
```csharp
public class EnableCrossOriginAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
("Access-Control-Allow-Origin", "*");
base.OnActionExecuting(filterContext);
}
}
[EnableCrossOrigin]
public IHttpActionResult Method()
{
// 處理方法邏輯
}
```
通過以上示例,我們可以實現(xiàn)A項目通過前端JavaScript代碼跨域調(diào)用B項目的WebAPI方法。在B項目中,我們使用了跨域操作的特性類來配置跨域訪問。同時,A項目中的前端代碼通過AJAX方法發(fā)送GET請求到B項目的WebAPI方法,并處理返回的數(shù)據(jù)或錯誤。