E. *_*ist 5 ajax asp.net-mvc asp.net-core razor-pages asp.net-core-viewcomponent
是否可以在 ASP.NET Core 2.1 Razor 页面中刷新视图组件?
我发现这在使用 AJAX 的 ASP.NET MVC 中是可能的 - 请参阅Viewcomponent 替代解决方案,用于 ajax 刷新和ViewComponents 不是 async。但是 ASP.NET Core 呢?
我发现的一种解决方案基本上是让控制器返回视图组件,然后使用 AJAX 进行刷新。
这是从ViewComponents借来的例子不是异步的
~/HelloWorldViewComponent.cs
public class HelloWorldViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
var model = new string[]
{
"Hello", "from", "the", "view", "component."
};
return View("Default", model);
}
}
Run Code Online (Sandbox Code Playgroud)
~/HomeController.cs(我无法让这部分在剃刀页面中工作)
public class HomeController : Controller
{
public IActionResult GetHelloWorld()
{
return ViewComponent("HelloWorld");
}
}
Run Code Online (Sandbox Code Playgroud)
~/Views/Shared/Components/HelloWorld/Default.cshtml
@model string[]
<ul>
@foreach(var item in Model)
{
<li>@item</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
~/wwwroot/index.html
<body>
<script src="js/jquery.min.js"></script>
<script>
$.get("home/GetHelloWorld", function(data) {
$("body").html(data);
});
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法让控制器与 Razor Pages 一起工作,我无法弄清楚这是否可能。
打开 Startup.cs 并替换它
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)
有了这个
app.UseMvcWithDefaultRoute();
Run Code Online (Sandbox Code Playgroud)
ASP.NET Core Razor Pages 模板 ( dotnet new razor) 不附带控制器路由,因为它不附带控制器。添加控制器路由的最简单方法是 via UseMvcWithDefaultRoute(),它相当于以下内容:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
安装该路由后,URL~/Home/GetHelloWorld就会映射到HomeController.GetHelloWorld()操作。
以下是GitHub 提交,演示了新的 ASP.NET Core Razor Pages 应用程序中的用例。
https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1
| 归档时间: |
|
| 查看次数: |
5310 次 |
| 最近记录: |