Razor视图引擎语法
我有一个表示网页层次结构的模型。我想通过递归爬树并呈现HTML来创建左侧菜单,这是我的代码:Razor视图引擎语法,razor,Razor,我有一个表示网页层次结构的模型。我想通过递归爬树并呈现HTML来创建左侧菜单,这是我的代码: @{var parent = Model} <!-- create stating html for ancestors up the tree --> @do{ <ul> <li><a href='@parent.Url'>@parent.MenuTitle</a> @{parent = par
@{var parent = Model}
<!-- create stating html for ancestors up the tree -->
@do{
<ul>
<li><a href='@parent.Url'>@parent.MenuTitle</a>
@{parent = parent.Parent}
}while(parent != null)
<!-- create children of the current page -->
<ul>
@foreach (var child in Model.Children)
{
<li><a href="@child.Url">@child.MenuTitle</a></li>
}
</ul>
<!-- close stating html for ancestors up the tree -->
@{parent = Model}
@do{
</li>
</ul>
@{parent = parent.Parent}
}while(parent != null)
@{var parent=Model}
@做{
-
@{parent=parent.parent}
}while(父级!=null)
@foreach(Model.Children中的变量child)
{
}
@{parent=Model}
@做{
@{parent=parent.parent}
}while(父级!=null)
然而,Visual Studio中的Razor intellisense不喜欢这种断开连接的HTML,即在一个区域打开HTML元素,在另一个区域关闭。有办法解决这个问题吗?有更好的解决办法吗?有,但看起来很难看。在标签之前添加“<代码> @:/COD>”可以欺骗它,在这种情况下,Rasor解析器会将其视为文字:
@:<ul>
@:
以及:
@:
等等
当然,正确的方法是调整视图模型,使繁重的工作在服务器上完成,这样在视图中,您只需循环遍历值并生成标记。Visual Studio intellisense无法知道两个不同循环中的开始和结束标记是否真的存在匹配,所以它指向你是完全正常的。如果您知道自己在做什么,并且确信您的代码将生成匹配的标记,那么您可以忽略intellisense的抱怨:它不应该阻止您的razor页面工作
@:<li>
<a href='@parent.Url'>@parent.MenuTitle</a>