以下是一个示例解决方案,演示了如何从Razor视图调用ASP.NET Core Web API。
首先,创建一个ASP.NET Core Web API项目。
创建一个名为"WebApiDemo"的新项目。
在项目文件夹中创建一个名为"Controllers"的文件夹。
在"Controllers"文件夹中创建一个名为"ValuesController.cs"的文件,内容如下:
using Microsoft.AspNetCore.Mvc;
namespace WebApiDemo.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(new string[] { "value1", "value2" });
}
}
}
ConfigureServices
方法中,以启用MVC和Razor视图:services.AddControllersWithViews();
Configure
方法中,以启用路由和默认的MVC端点:app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
创建一个"Home"控制器,用于渲染Razor视图。
在"Home"控制器中创建一个名为"Index"的操作方法,代码如下:
using Microsoft.AspNetCore.Mvc;
namespace WebApiDemo.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
在"Views"文件夹中创建一个名为"Home"的文件夹。
在"Home"文件夹中创建一个名为"Index.cshtml"的文件,内容如下:
@{
ViewData["Title"] = "Home Page";
}
@ViewData["Title"]
当访问"/Home/Index"时,将使用AJAX从Web API的"/api/values"端点获取数据,并将其显示在页面上。