我目前是 Razor Pages 的新手,问题是我正在尝试从主视图加载部分视图,但我真的很挣扎,因为缺乏我正在创建的文档。
我的应用程序是带有 .NET 8.0 的 ASP.NET Core Razor Pages
这就是我的主视图:
@page "/"
@using Project.Pages
@model PageModel
@section Scripts
{
}
<div class="titulo">
<div id="iconoPagina" class="float-left gm_iconoCentralita3cx mr-3" runat="server">
</div>
<div class="float-left">
<h1 id="titulo" class="cabecera_Negro"></h1>
</div>
</div>
<div class="caja col-12 mt-3 py-4">
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
@foreach (var value in Model.People)
{
<li class="nav-item">
@Html.ActionLink(@value.name, "LoadData", "People", new { id1 = value.id1, id2 = value.id2}, new { @class = "sbmt" })
</li>
}
</ul>
</div>
<div id="partialView">
</div>
</div>
</nav>
</div>
这是我的控制器:
using Project.Models.ViewModel;
using Microsoft.AspNetCore.Mvc;
namespace Project.Controllers
{
public class PeopleController: Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult LoadData(int id1, int id2)
{
PersonalViewModel model = APICall.GetData<PersonalViewModel >(id1, id2, "APIRestEndPoint");
return PartialView("_PartialView", model);
}
}
}
APICall.GetData 只是我创建的一个函数,它调用我的 APIRest 来获取数据,这里一切正常。
我发现在我的 Program.cs 中我需要创建一个 MappControllerRoute 才能使我的 Html.ActionLink 工作,如果我删除此代码,链接将有一个空的 href:
app.MapControllerRoute(
name: "default",
pattern: "{controller=People}/{action=LoadData}/{id1}&{id2}");
问题是一切都工作正常,但是当从控制器调用分部视图时,它会给我一个错误,告诉我对象引用未设置到对象的实例但我不知道,因为当我检查视图模型有数据时。
我想知道为什么路由是必要的,因为我在任何地方仅使用 Html.ActionLink 检查都会调用控制器而不需要任何添加
这可能会有所帮助链接。 您需要在按钮单击上使用 ajax 并使用 javascript/jquery 处理响应。