Exi*_*tos 16 c# razor asp.net-mvc-3
我有一个巨大的恼人的问题,我有一个观点:
@{
if(ViewBag.Section == "Home")
{
<div id="headerfrontPage">
}
else
{
<div id="header">
}
}
Run Code Online (Sandbox Code Playgroud)
我收到编译错误:
代码块缺少结束"}"字符.确保此块中的所有"{"字符都有匹配的"}"字符,并且没有任何"}"字符被解释为标记.
我如何有条件地写一个div?它的基础是hack ...
小智 22
在包装div的内部元素时,可以使用相同的构造,如:
@if (ViewBag.Section == "Home")
{
<text><div id="headerfrontPage"></text>
}
else
{
<text><div id="header"></text>
}
Run Code Online (Sandbox Code Playgroud)
或者你使用razor语法@:喜欢
@if (ViewBag.Section == "Home")
{
@:<div id="headerfrontPage">
}
else
{
@:<div id="header">
}
Run Code Online (Sandbox Code Playgroud)
但对于你目前的情况,我更喜欢Ron Sijm的解决方案:
@{
var divName = ViewBag.Section == "Home" ? "headerfrontPage" : "header";
}
<div id="@divName">
Run Code Online (Sandbox Code Playgroud)
我怀疑这是因为你的div没有关闭,所以剃刀假设结束括号实际上是div内容的一部分.
您可以尝试在其中输出代码中的整个div内容,包括结束标记,或者使用Response.Write或类似的东西输出div标记,这样就没有令人困惑的标记.
编辑:也可以将你的div标签括在一个
<text></text>
Run Code Online (Sandbox Code Playgroud)
也许值得尝试一下.
你可以试试这个:
@{
string divName;
if(ViewBag.Section == "Home")
{
divName = "headerfrontPage";
}
else
{
divName = "header";
}
}
<div id="@divName">
Run Code Online (Sandbox Code Playgroud)
我不确定这是否会有所帮助,这是一个很长的镜头.但至少imo看起来更好......
| 归档时间: |
|
| 查看次数: |
12317 次 |
| 最近记录: |