Я обнаружил, что это можно сделать в asp.net MVC с использованием Ajax, см. Решения здесь Альтернатива Viewcomponent для обновления ajax и здесь ViewComponents не асинхронны
Одно решение, которое я нашел, в основном состоит в том, чтобы контроллер возвращал ViewComponent, а затем использовал Ajax для обновления.
Этот пример заимствован из ViewComponents не являются асинхронными
~ / HelloWorldViewComponent.cs
public class HelloWorldViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
var model = new string[]
{
"Hello", "from", "the", "view", "component."
};
return View("Default", model);
}
}
~ / HomeController.cs (я не могу заставить эту часть работать на бритвенных страницах)
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>
Моя проблема в том, что я не могу заставить контроллер работать вместе с Razor Pages, я не могу понять, возможно ли это вообще.