ASP.Net MVC:内联HTML辅助方法为何无任何输出?
问题分析与解决方案
我帮你定位到了问题的核心——这是Razor语法里很容易踩的小坑!
核心问题:未输出Helper的返回结果
在Razor的代码块(@{ ... })中直接调用ShowTree(menuList)并不会自动把Helper生成的HTML输出到页面上,你需要用@符号显式输出它的返回内容。
修正后的完整代码
@helper ShowTree(List<Scaffolding.Controllers.MenuItem> menusList) { <ul> @foreach (var item in menusList) { <li> <span>@item.Name</span> @if (item.Children.Any()) { @ShowTree(item.Children) } </li> } </ul> } @{ var menuList = ViewBag.menusList as List<Scaffolding.Controllers.MenuItem>; // 关键:用@输出Helper的返回值 @ShowTree(menuList); }
或者你也可以把调用Helper的代码移出代码块,直接写:
@{ var menuList = ViewBag.menusList as List<Scaffolding.Controllers.MenuItem>; } @ShowTree(menuList)
额外排查点
如果修正后还是没有输出,建议检查以下几点:
- 确认
ViewBag.menusList在控制器中已经被正确赋值,并且不是null - 检查
MenuItem类的Children属性是否被初始化(比如默认设为new List<MenuItem>(),避免NullReferenceException) - 确认
MenuItem的Name属性有实际内容,避免输出空的<span>
内容的提问来源于stack exchange,提问作者Mist
相关产品推荐
相关产品推荐

