剃刀逃脱结肠内联

时间:2013-04-14 00:22:24

标签: asp.net-mvc razor

如何在剃刀代码中转义冒号?

这是我的问题:

@count@:: @item.Title - @item.Link - @item.Price

@count变量后导致错误。我怎么能在我的计数旁边使用冒号?

它应该像这样呈现:

1: Title - Link - Price

**更新**

我的代码块

@{
    int count = 0;
    foreach (var item in Model.Wishes) {
        count++;
        @count@:: @item.Title - @item.Link - @item.Price
        <br />
    }
}

2 个答案:

答案 0 :(得分:13)

您需要将代码的显示部分包裹在<text>标记中。结肠不需要逃脱。

@{
    int count = 0;

    foreach (var item in Model.Wishes) {
        count++;
        <text>
        @count: @item.Title - @item.Link - @item.Price
        <br />
        </text>
    }
}

http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx

  

<text>标签是由Razor专门处理的元素。它导致Razor将<text>块的内部内容解释为内容,并且不呈现包含<text>标记元素(意味着仅呈现<text>元素的内部内容 - 标签本身不会)。这样,当您想要渲染未被HTML元素包装的多行内容块时,这将非常方便。

http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax#BM_CombiningTextMarkupAndCode

  

使用@:运算符或<text>元素。 @:输出包含纯文本或不匹配的HTML标记的单行内容; <text>元素包含多行以输出。当您不希望将HTML元素呈现为输出的一部分时,这些选项很有用。

答案 1 :(得分:0)

如果count被声明为变量,那么这应该可行。

@{
   var count = 4;
}

   @count: 

如果count是模型的一部分,那么这应该可行。

@model MvcApplication4.Models.DemoViewModel

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>



@Model.Count: