Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .cshtml文件中的Razor-添加额外的';如果';语句给出错误_C#_Razor - Fatal编程技术网

C# .cshtml文件中的Razor-添加额外的';如果';语句给出错误

C# .cshtml文件中的Razor-添加额外的';如果';语句给出错误,c#,razor,C#,Razor,我试图在razor页面中添加几个if语句。我正在更改的页面在更改之前工作,但是,当我添加我在下面的代码示例中突出显示的块时,我出现以下错误: 加载Razor脚本时出错~/macroscript/genericpage.cshtml 代码块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记 if (publishedRightHandPods.Any()) { foreach(var rh in publishedRightHandPo

我试图在razor页面中添加几个if语句。我正在更改的页面在更改之前工作,但是,当我添加我在下面的代码示例中突出显示的块时,我出现以下错误:

加载Razor脚本时出错~/macroscript/genericpage.cshtml 代码块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且“}”字符都没有被解释为标记

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标记嵌套在一起。