如何将动态内容添加到 _Layout.cshtml 文件?
How to add dynamic content to a _Layout.cshtml file?
我正在 ASP.NET Core 中开发 Web 应用程序,我想知道是否有一种方法可以根据我从 [=] 调用的数据动态更新 _Layout.cshtml 文件中的内容28=] 数据库,就像您对普通 Razor 页面和模型所做的那样,例如Index.cshtml 和 Index.cshtml.cs
我想在 _Layout.cshtml 中访问的代码(我不确定在哪里添加此代码):
public List<Location> activeLocation = new List<Location>();
public void OnGet()
{
activeLocation = new Inventory().ActiveLocation;
}
_Layout.cshtml(我要访问数据的地方):
@foreach(var location in Model.activeLocation)
{
<div class="location_name">@location.Name</div>
}
我尝试在 _Layout.cshtml 文件中添加 C# 代码,看看我是否能够从 MySQL 数据库中调用数据,但它给出了很多错误。
您有两个选择:
将其放在 Razor 页面中 (_Layout.cshtml)
@{
List<string> GetLocations()
{
// e.g. Put a database call here
return new List<string>()
{
"Texas",
"Connecticut",
"Florida"
};
}
}
@foreach (var location in GetLocations())
{
<div class="location_name">@location</div>
}
从 class:
调用它
public static class Locations
{
public static List<string> GetLocations()
{
// e.g. Put a database call here
return new List<string>()
{
"Texas",
"Connecticut",
"Florida"
};
}
}
@foreach (var location in Locations.GetLocations())
{
<div class="location_name">@location</div>
}
也许你可以尝试使用 ViewData:
布局:
@{
var activeLocation=ViewData["activeLocation"] as List<Location>;
}
@foreach(var location in activeLocation)
{
<div class="location_name">@location.Name</div>
}
然后你可以在每个使用布局的页面OnGet()
中设置ViewData["activeLocation"]
,这样你就可以为不同的页面设置不同的内容布局:
public void OnGet()
{
ViewData["activeLocation"] = new List<Location> {... };
}
视图组件 (https://www.learnrazorpages.com/razor-pages/view-components) 设计用于向布局页面添加动态内容。它们集中了 UI 段的逻辑和视图,这样您就不必直接从 Razor 文件进行数据库调用(这总是一个坏主意),也不必向每个使用的页面添加相同的代码布局(不可缩放)。
我正在 ASP.NET Core 中开发 Web 应用程序,我想知道是否有一种方法可以根据我从 [=] 调用的数据动态更新 _Layout.cshtml 文件中的内容28=] 数据库,就像您对普通 Razor 页面和模型所做的那样,例如Index.cshtml 和 Index.cshtml.cs
我想在 _Layout.cshtml 中访问的代码(我不确定在哪里添加此代码):
public List<Location> activeLocation = new List<Location>();
public void OnGet()
{
activeLocation = new Inventory().ActiveLocation;
}
_Layout.cshtml(我要访问数据的地方):
@foreach(var location in Model.activeLocation)
{
<div class="location_name">@location.Name</div>
}
我尝试在 _Layout.cshtml 文件中添加 C# 代码,看看我是否能够从 MySQL 数据库中调用数据,但它给出了很多错误。
您有两个选择:
将其放在 Razor 页面中 (_Layout.cshtml)
@{ List<string> GetLocations() { // e.g. Put a database call here return new List<string>() { "Texas", "Connecticut", "Florida" }; } } @foreach (var location in GetLocations()) { <div class="location_name">@location</div> }
从 class:
调用它public static class Locations { public static List<string> GetLocations() { // e.g. Put a database call here return new List<string>() { "Texas", "Connecticut", "Florida" }; } }
@foreach (var location in Locations.GetLocations()) { <div class="location_name">@location</div> }
也许你可以尝试使用 ViewData:
布局:
@{
var activeLocation=ViewData["activeLocation"] as List<Location>;
}
@foreach(var location in activeLocation)
{
<div class="location_name">@location.Name</div>
}
然后你可以在每个使用布局的页面OnGet()
中设置ViewData["activeLocation"]
,这样你就可以为不同的页面设置不同的内容布局:
public void OnGet()
{
ViewData["activeLocation"] = new List<Location> {... };
}
视图组件 (https://www.learnrazorpages.com/razor-pages/view-components) 设计用于向布局页面添加动态内容。它们集中了 UI 段的逻辑和视图,这样您就不必直接从 Razor 文件进行数据库调用(这总是一个坏主意),也不必向每个使用的页面添加相同的代码布局(不可缩放)。