C# .cshtml文件中的Razor-添加额外的';如果';语句给出错误
我试图在razor页面中添加几个if语句。我正在更改的页面在更改之前工作,但是,当我添加我在下面的代码示例中突出显示的块时,我出现以下错误: 加载Razor脚本时出错~/macroscript/genericpage.cshtml 代码块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记C# .cshtml文件中的Razor-添加额外的';如果';语句给出错误,c#,razor,C#,Razor,我试图在razor页面中添加几个if语句。我正在更改的页面在更改之前工作,但是,当我添加我在下面的代码示例中突出显示的块时,我出现以下错误: 加载Razor脚本时出错~/macroscript/genericpage.cshtml 代码块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记 if (publishedRightHandPods.Any()) { foreach(var rh in publishedRightHandPo
if (publishedRightHandPods.Any())
{
foreach(var rh in publishedRightHandPods)
{
if (rh.image.GetType() == typeof(DynamicXml))
{
if (rh.link.GetType() == typeof(DynamicXml))
{
var linkSupplied = !String.IsNullOrEmpty(rh.link.url) && !String.IsNullOrWhiteSpace(rh.link.url);
var titleSupplied = !String.IsNullOrEmpty(rh.title) && !String.IsNullOrWhiteSpace(rh.title);
@* *************** *@
@* I'M ADDING THIS *@
@* *************** *@
@{
if (linkSupplied) {
<a href="@(rh.link.url)">
}
}
@* ****************** *@
@* END OF ADDED BLOCK *@
@* ****************** *@
<div class="side-pod" style="background: url('@(rh.image.mediaItem.Image.umbracoFile)') no-repeat scroll 0 0 transparent; height: @(rh.image.mediaItem.Image.umbracoHeight)px">
@{
if (titleSupplied)
{
<h2 class="title" style="color: #@(rh.textColour);">@Html.Raw(rh.title.ToString())</h2>
}
}
@{
if (!String.IsNullOrEmpty(rh.linkText) && !String.IsNullOrWhiteSpace(rh.linkText) && !String.IsNullOrEmpty(rh.link.url) && !String.IsNullOrWhiteSpace(rh.link.url))
{
<a class="findoutmore-btn" href="@(rh.link.url)">@(rh.linkText)</a>
}
}
</div>
@* *************** *@
@* I'M ADDING THIS *@
@* *************** *@
@{
if (linkSupplied) {
</a>">
}
}
@* ****************** *@
@* END OF ADDED BLOCK *@
@* ****************** *@
}
}
}
if(publishedDrightHandPods.Any())
{
foreach(DrightHandPods中的var rh)
{
if(rh.image.GetType()==typeof(DynamicXml))
{
if(rh.link.GetType()==typeof(DynamicXml))
{
var linkSupplied=!String.IsNullOrEmpty(rh.link.url)和&!String.IsNullOrWhiteSpace(rh.link.url);
var titleSupplied=!String.IsNullOrEmpty(rh.title)和&!String.IsNullOrWhiteSpace(rh.title);
@* *************** *@
@*我加上这个*@
@* *************** *@
@{
如果(已提供链接){
}
}
@* *************** *@
@*我加上这个*@
@* *************** *@
@{
如果(已提供链接){
">
}
}
@* ****************** *@
@*添加的块结束*@
@* ****************** *@
}
}
}
我不明白为什么
中的if语句可以工作,但是当我在div之外添加新的(类似的)语句时,我得到了错误
****更新****
如果我删除我添加的If语句周围的@{},如下所示:
if (linkSupplied) {
<a href="@(rh.link.url)">
}
if(链接已提供){
}
我在屏幕上看到:
在第二个if语句的最后一个结束标记后,您有一个额外的撇号和大于号:
@{
if (linkSupplied) {
</a>">
}
}
@{
如果(已提供链接){
">
}
}
在第二个if语句的最后一个结束标记后,您有一个额外的撇号和大于号:
@{
if (linkSupplied) {
</a>">
}
}
@{
如果(已提供链接){
">
}
}
当您需要在if
语句中打开HTML标记但不想关闭它时,我建议您使用@HTML.Raw()
:
@如果(已提供链接){
@Html.Raw(string.Format(“”)
}
当您需要在if
语句中打开HTML标记但不想关闭它时,我建议您使用@HTML.Raw()
:
@如果(已提供链接){
@Html.Raw(string.Format(“”)
}
尝试使用全局{},而不是在每个部分都使用它。标记在razor语法中会很好地工作。这样,您可以简化代码。尝试使用全局{}而不是在每个部分都使用它。标记在razor语法中会很好地工作。通过这种方式,您可以简化代码。发现得很好,尽管抱歉Martijn这是一个拼写错误-实际代码没有那么好的发现,尽管抱歉Martijn这是一个拼写错误-实际代码没有你尝试过的
。是吗用
试过。谢谢Sanjay,我试过了,并在问题中添加了一个更新,表示我仍然收到了错误。谢谢Sanjay,我试过了,并在问题中添加了一个更新,表示我仍然收到了错误。谢谢,现在已修复,尽管我仍然不明白Razor为什么认为HTML必须在e原始代码,但随后无法对添加的代码执行相同的操作抱歉,我不理解您的所有短语,但我尝试回答您。Razor帮助您保持HTML结构。然后,当您使用Razor打开HTLM标记时,Razor想关闭它。Razor无法理解if
条件。然后,为了避免问题,Razor强制您嵌套C#代码和HTML标记在一起。谢谢,现在修复了,虽然我仍然不明白Razor为什么会识别HTML必须在原始代码中输出,但随后无法对添加的代码执行相同的操作抱歉,我不理解您的所有短语,但我尝试回答您。Razor帮助您保持HTML结构。然后,当您使用Razo打开HTLM标记时r、 Razor想关闭它。Razor无法理解if
条件。然后,为了避免问题,Razor强制您将C#code和HTML标记嵌套在一起。