Asp.net 如何在razor代码块中包含ul标签?
为什么下面的代码工作得很好Asp.net 如何在razor代码块中包含ul标签?,asp.net,asp.net-mvc,asp.net-mvc-3,razor,c#-3.0,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,C# 3.0,为什么下面的代码工作得很好 <ul class="searchList"> @if (Model.Count() > 0) { foreach (var partner in Model) { <li> @Html.ActionLink(@partner
<ul class="searchList">
@if (Model.Count() > 0)
{
foreach (var partner in Model)
{
<li>
@Html.ActionLink(@partner.Name, "Details", "Partner", new { id = partner.AID }, null)<br />
@partner.Street<br />
@partner.CityStateZip<br />
@if(!string.IsNullOrEmpty(partner.Phone))
{
@partner.Phone<br />
}
@(partner.Distance) miles<br />
</li>
}
}
</ul>
@如果(Model.Count()>0)
{
foreach(模型中的var合作伙伴)
{
-
@ActionLink(@partner.Name,“Details”,“partner”,new{id=partner.AID},null)
@partner.Street
@partner.CityStateZip
@如果(!string.IsNullOrEmpty(partner.Phone))
{
@合作伙伴电话
}
@(伙伴距离)英里
}
}
但是这段代码并不好用
@if (Model.Count() > 0)
{
<ul class="searchList">
foreach (var partner in Model)
{
<li>
@Html.ActionLink(@partner.Name, "Details", "Partner", new { id = partner.AID }, null)<br />
@partner.Street<br />
@partner.CityStateZip<br />
@if(!string.IsNullOrEmpty(partner.Phone))
{
@partner.Phone<br />
}
@(partner.Distance) miles<br />
</li>
}
</ul>
}
@if(Model.Count()>0)
{
foreach(模型中的var合作伙伴)
{
-
@ActionLink(@partner.Name,“Details”,“partner”,new{id=partner.AID},null)
@partner.Street
@partner.CityStateZip
@如果(!string.IsNullOrEmpty(partner.Phone))
{
@合作伙伴电话
}
@(伙伴距离)英里
}
}
第二个错误返回以下错误
编译器错误消息:CS0103:当前上下文中不存在名称“partner”
我发现Razor的代码混合规则很难遵循。任何给出规范解释的链接都将受到欢迎
Seth在第二个示例中,您需要
@foreach
从标记转换为代码
在第一个示例中,您没有这样做,因为
if
块的直接内容已经是代码。您需要在foreach
前面加上@
:
@foreach (var partner in Model)
正在将Razor设置回标记模式,因此您需要添加@
以告诉它返回到代码块中。您应该遵循作为参考,您将永远不会再面临此类问题。:) 谢谢你不仅告诉我怎么做,而且还解释了我做错了什么。谢谢你的链接。正是我需要的。