gpt4 book ai didi

ajax - 是否可以在 ASP.NET Core 2.1 Razor 页面中刷新 View 组件?

转载 作者:行者123 更新时间:2023-12-03 17:04:02 25 4
gpt4 key购买 nike

是否可以在 ASP.NET Core 2.1 Razor 页面中刷新 View 组件?
我发现这在使用 AJAX 的 ASP.NET MVC 中是可能的——请参阅解决方案 Viewcomponent alternative for ajax refreshViewComponents are not async .但是 ASP.NET Core 呢?
我发现的一种解决方案基本上是让 Controller 返回 View 组件,然后使用 AJAX 进行刷新。
这个例子是从 ViewComponents are not async 借来的
~/HelloWorldViewComponent.cs

public class HelloWorldViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
var model = new string[]
{
"Hello", "from", "the", "view", "component."
};

return View("Default", model);
}
}
~/HomeController.cs (我无法让这部分在 Razor 页面中工作)
public class HomeController : Controller
{
public IActionResult GetHelloWorld()
{
return ViewComponent("HelloWorld");
}
}
~/Views/Shared/Components/HelloWorld/Default.cshtml
@model string[]
<ul>
@foreach(var item in Model)
{
<li>@item</li>
}
</ul>
~/wwwroot/index.html
<body>
<script src="js/jquery.min.js"></script>
<script>
$.get("home/GetHelloWorld", function(data) {
$("body").html(data);
});
</script>
</body>
我的问题是我无法让 Controller 与 Razor Pages 一起工作,我无法弄清楚这是否可能。

最佳答案

TLDR

打开 Startup.cs 并替换它

app.UseMvc();

有了这个
app.UseMvcWithDefaultRoute();

细节

ASP.NET Core Razor Pages 模板 ( dotnet new razor ) 没有 Controller 路由,因为它没有 Controller 。添加 Controller 路由的最简单方法是通过 UseMvcWithDefaultRoute() ,这相当于以下内容:
app.UseMvc(routes => 
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

安装该路由后,URL ~/Home/GetHelloWorld映射到 HomeController.GetHelloWorld()行动。

这是 a GitHub commit在新的 ASP.NET Core Razor Pages 应用程序中演示您的用例。

也可以看看

https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1

关于ajax - 是否可以在 ASP.NET Core 2.1 Razor 页面中刷新 View 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com