ASP.NET Core 6中@RenderSection是否适配自定义节名称?附示例咨询
ASP.NET Core 6中@RenderSection支持自定义名称,你的写法完全可行
直接说结论:你给出的代码写法完全可以正常工作,@RenderSection对节的名称没有特殊限制,只要满足两个关键要求就行:
- 布局页里
@RenderSection指定的名称,和视图里@section定义的名称完全一致(注意Razor对节名称是大小写敏感的,比如scriptsNav_menu和ScriptsNav_menu会被当成两个不同的节) - 当你把
required设为false时,就算视图没定义这个节,程序也不会报错;要是设为true,那所有用这个布局的视图都必须写对应节的内容
你的示例代码验证
布局页代码:
<html> <body> @RenderBody() </body> <script type="text/javascript" src="~/lib/layout.js"></script> @RenderSection("scriptsNav_menu", required: false) </html>
视图代码:
@section scriptsNav_menu { <script type="text/javascript" src="~/lib/contacts.js"></script> } <div class="row"> <div class="col-md-6 col-md-offset-3"> <h2> Contacts</h2> </div> </div>
这段代码运行后,视图里的scriptsNav_menu节会被准确渲染到布局页的对应位置,最终生成的HTML里会同时包含layout.js和contacts.js两个脚本引用,完全符合预期。
额外提醒
- 节名称可以用下划线、连字符这类特殊字符,只要布局和视图里的名称统一就没问题
- 要是需要多个自定义节,重复用
@RenderSection和对应的@section就行,互相不会冲突
内容的提问来源于stack exchange,提问作者Paolo fernando Flores Rivera
相关产品推荐
相关产品推荐

