2010-12-11 31 views
16

爲什麼我需要使用<text>標籤來封裝管道字符'|'在這個標記?當然,這遠遠超出了ActionLink方法的範圍。MVC3 Razor視圖中的文本字面問題

@foreach (var item in Model.DetailItem.PlannedResources) 
{ 
    <tr> 
     <td> 
      @if (Model.ViewMode == ViewMode.Edit) 
      { 
       @Html.ActionLink("Edit", "Edit", new { id = item.PlannedResourceId }) <text>|</text> 
       @Html.ActionLink("Delete", "Delete", new {id = item.PlannedResourceId})                  
      } 
      @Html.ActionLink("Details", "Details", new { id = item.PlannedResourceId }) 
     </td> 
     <td> 
      | @item.ResourceType.Name 
     </td> 
    </tr> 
} 

如果我不使用它,我得到的錯誤CS1525: Invalid expression term '|',但第二個「|」無阻礙地獲取。

回答

20

這是因爲當您在{}的聲明中時,只有HTML標籤被視爲文字,其他所有內容都是服務器端腳本。因此,您需要使用標準HTML標記,例如<div>,<span>,或者如果您要使用文字,請使用不輸出到響應的特殊<text>標記。

+0

有趣,但爲什麼然後我的其他| char(見編輯)在內部{}以外,但它仍然在一個外部循環中{}。在HTML標籤內部是否以某種方式轉義它? – ProfK 2010-12-11 13:46:41

+0

@ProfK,我不明白。你在說什麼內在和外在的{}?什麼編輯? – 2010-12-11 13:48:24

+1

@ProfK,對不起,現在我看到了你的編輯。在外部''''中,'|'字符在標籤內:'​​',這就是爲什麼它可以工作,而在內部沒有標籤:你有'{',一些服務器端助手'@ Html.ActionLink'之後直接用'|',沒有標籤,當沒有標籤時,它被認爲是服務器端。 – 2010-12-11 13:50:49

18

如果您的文本跨越多行,則可以使用<text>標記。

<text>your text here...
over to the 2nd line.</text>

或者,如果你只是想輸出管道符使用@:指令指定的文字,
所以@:|將輸出|,錯誤信息將消失。

相關問題