创建两个项目
首先,我们需要创建两个项目,一个是MVC项目,另一个是WebAPI项目。这两个项目将用于实现跨域调用的功能。MVC前端代码在MVC项目的前端代码中,我们需要编写一段JavaScript代码来调用Web
首先,我们需要创建两个项目,一个是MVC项目,另一个是WebAPI项目。这两个项目将用于实现跨域调用的功能。
MVC前端代码
在MVC项目的前端代码中,我们需要编写一段JavaScript代码来调用WebAPI的方法。具体的代码如下所示:
```javascript
$.ajax({
url: "http://localhost:5000/api/method",
method: "GET",
success: function(response) {
// 处理返回的数据
},
error: function(error) {
// 处理错误
}
});
```
在上述代码中,我们使用了jQuery的AJAX方法来发送GET请求到WebAPI的方法。需要注意的是,URL应该替换为你实际的WebAPI地址。
在WebAPI中配置跨域
为了使MVC能够跨域调用WebAPI的方法,我们需要进行一些配置。在WebAPI项目的根目录下,新建一个类,并在需要跨域的方法前面添加跨域操作的特性。具体的代码如下所示:
```csharp
public class EnableCrossOriginAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
("Access-Control-Allow-Origin", "*");
base.OnActionExecuting(filterContext);
}
}
[EnableCrossOrigin]
public IHttpActionResult Method()
{
// 处理方法逻辑
}
```
上述代码中,我们创建了一个名为`EnableCrossOriginAttribute`的特性类,它继承自`ActionFilterAttribute`。在该特性类中,我们通过设置响应头的方式实现了跨域访问。然后,在需要跨域的方法上添加了`EnableCrossOrigin`特性,以启用跨域访问。
在Controller中调用WebAPI方法
在MVC项目的Controller中,我们可以使用HttpClient来调用WebAPI的方法。需要注意的是,我们需要定义一个接收数据的实体类来接收返回的数据。具体的代码如下所示:
```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
// 处理返回的数据
}
else
{
// 处理错误
}
}
return View();
}
```
在上述代码中,我们首先定义了一个名为`DataModel`的实体类来接收返回的数据。然后,我们使用HttpClient发送GET请求到WebAPI的方法,并根据返回的状态码来处理返回的数据或错误。
A调用B的Demo
最后,我们来看一个完整的示例,其中A调用B的Demo。在这个示例中,我们假设A是MVC项目,B是WebAPI项目。
A项目的前端代码:
```javascript
$.ajax({
url: "http://localhost:5000/api/method",
method: "GET",
success: function(response) {
// 处理返回的数据
},
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()
{
// 处理方法逻辑
}
```
通过以上示例,我们可以实现A项目通过前端JavaScript代码跨域调用B项目的WebAPI方法。在B项目中,我们使用了跨域操作的特性类来配置跨域访问。同时,A项目中的前端代码通过AJAX方法发送GET请求到B项目的WebAPI方法,并处理返回的数据或错误。