我正在尝试使用
\_Layout.cshtml
中卡控制器的数据渲染部分视图。问题是只有 @Html.Partial
有效。我对自己说:“好吧,我会尝试使用 ViewBag 或 ViewDate 甚至动态模型传递必要的数据”,但这也不起作用。它只渲染视图,但其中没有数据。调试时甚至不会进入控制器功能。
侧边栏.cshtml:
<a href="javascript:void(0)">×</a>
@if (ViewBag.Cards != null)
{
@foreach (var card in ViewBag.Cards)
{
<a>@card.Number</a>
}
}
else
{
<p>No cards available.</p>
}
_Layout.cshtml:
@Html.Partial("SideBar")
卡控制器:
var user = await userManager.GetUserAsync(User);
var cards = await cardService.GetAllCardsAsync(user.Id);
cards = cards.Select(c => new CardViewModel
{
Id = c.Id,
Balance = c.Balance,
Number = c.Number,
Transactions = c.Transactions
});
ViewBag.Cards = cards;
return PartialView("Sidebar",cards);`
“@Html.Action”适用于旧的.net框架。在.net8(asp.net core)中,您可以尝试使用ViewComponent。尝试以下操作:
MyPagesViewComponent.cs
public class MyPagesViewComponent: ViewComponent
{
public IViewComponentResult Invoke()
{
string model = "test passing value"; //of course you can pass your object
return View("childPage1",model);
}
}
@model string //pass model type
@Model // display model value
...
@await Component.InvokeAsync("MyPages")
...