从 Html.ActionLink 渲染部分视图

问题描述 投票:0回答:1

我目前是 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 检查都会调用控制器而不需要任何添加

c# model-view-controller razor razor-pages .net-8.0
1个回答
0
投票

这可能会有所帮助链接。 您需要在按钮单击上使用 ajax 并使用 javascript/jquery 处理响应。

© www.soinside.com 2019 - 2024. All rights reserved.