C# Razor页面:如何在部分页面中包含pagesection?
我有一个剃刀页面布局页面,其中包括导航栏作为部分页面C# Razor页面:如何在部分页面中包含pagesection?,c#,.net,asp.net-core,razor-pages,C#,.net,Asp.net Core,Razor Pages,我有一个剃刀页面布局页面,其中包括导航栏作为部分页面 ... ... 在my_Nav.cshtml中 网站中的每个页面都使用此布局。我想能够包括“额外的”链接,在网站上的每个页面相关 我曾经尝试过使用@RenderSection,但似乎只有在布局页面中才允许使用节。这是否意味着我需要删除我的\u Nav部分代码,并将所有代码合并到一个文件中?或者有没有一种方法可以保持一个有组织的代码结构,并且仍然传递一些代码?对于jinja2代码块,这是没有问题的,所以我希望在Razor页面中也有一个不
...
...
在my_Nav.cshtml中
网站中的每个页面都使用此布局。我想能够包括“额外的”链接,在网站上的每个页面相关
我曾经尝试过使用@RenderSection
,但似乎只有在布局
页面中才允许使用节。这是否意味着我需要删除我的\u Nav
部分代码,并将所有代码合并到一个文件中?或者有没有一种方法可以保持一个有组织的代码结构,并且仍然传递一些代码?对于jinja2代码块,这是没有问题的,所以我希望在Razor页面中也有一个不错的方法
另外,我真的不想将完整的html字符串从c#类传递到html,我已经在传递链接中需要的任何变量
谢谢你的帮助
RenderSection
只能从布局页面调用
没有这样的插件可以将动态链接添加到局部视图。
作为一种解决方法,您可以将div放置在_Nav.cshtml之外,如下所示,并使用RenderSection
动态添加到div的链接:
....
<div class="links">
<partial name="_Nav" />
@RenderSection("Html", required: false)
</div>
....
。。。。
@RenderSection(“Html”,必填项:false)
....
_Nav.cshtml:
<a href="#link1">link 1</a>
<a href="#link2">link 2</a>
测试视图:
@page
@model IndexModel
//do your stuff...
@section Html
{
<a href='#link3'>link3</a>
}
@page
@模型索引模型
//做你的事。。。
@节Html
{
}
您不必在视图数据字典中存储html
在每个有额外链接要添加的视图上,存储一个列表
,字符串为URL,如下所示:
视图:
@{
ViewData[“链接”]=新列表(){”https://www.google.com", "https://www.facebook.com" };
}
然后在布局视图中:
<partial name="_Nav" view-data="@ViewData" />
现在在你的局部观点中:
//Default Links
@if (ViewData["Links"] != null)
{
//We have extra links
List<string> links = (List<string>)ViewData["Links"];
foreach (string link in links)
{
<a href="@link">link1</a>
}
}
//默认链接
@如果(ViewData[“链接”!=null)
{
//我们有额外的链接
列表链接=(列表)视图数据[“链接];
foreach(链接中的字符串链接)
{
}
}
由于部分视图中不允许使用部分
,如果您在需要添加链接的每个页面上的特定键下添加指向视图数据
的链接,然后将其传递到部分视图,该视图将视图数据字典
作为参数。谢谢,这是个好主意,我尝试过,但无法使razor页面作为viewdata键的值访问html。你有这样的例子吗?谢谢谢谢你的变通办法,我本想避免它,但我想我会采取“剃须刀页面”的做法:(谢谢!似乎你想使用默认的razor pages插件来满足你的需求。经过长时间的研究,没有这样的插件来完成。因为你所做的是在局部视图中,它不同于razor pages。我认为更简单的方法是使用我所做的或@HMZ所做的。这是无法避免的。如果我的回答帮助了你,你能接受这个答案吗?它也可以帮助别人。
//Default Links
@if (ViewData["Links"] != null)
{
//We have extra links
List<string> links = (List<string>)ViewData["Links"];
foreach (string link in links)
{
<a href="@link">link1</a>
}
}