为什么以下代码工作正常......
<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>
但是这段代码不能正常工作......
@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>
}
第二个错误1返回以下错误...
编译器错误消息:CS0103:当前上下文中不存在名称“partner”。
我发现Razor的代码混合规则难以理解。任何提供规范解释的链接都将受到赞赏。
赛斯
答案 0 :(得分:10)
您需要在foreach
前加上@
:
@foreach (var partner in Model)
<ul>
正在将Razor重新设置为标记模式,因此您需要添加@
以告知它返回代码块。
答案 1 :(得分:3)
在第二个示例中,您需要@foreach
从标记转换为代码。
在第一个示例中,您没有,因为if
块的直接内容已经是代码。
答案 2 :(得分:2)
你应该关注this作为参考,你将永远不会遇到这样的问题。 :)