2013-08-20 34 views
0
grid.Column(format: 
    v => 
      @Html.ActionLink(@item.Name, "Details", new { id = item.Id }).ToString() + 
      (v.State == State.Y 
       ? @Html.ActionLink("Start", "Start", new { id = v.Id }) 
       : (v.State == State.Z) 
         ? @Html.ActionLink("Continue", "Start", new { id = v.Id }) 
         : MvcHtmlString.Create("")).ToString() 
) 

這個解決方案給了我一個編碼的HTML,我能做些什麼呢?Combine 2 MvcHtmlString Togther'Format'裏面

回答

0

這個答案是基於SO問題發現here

的想法是使用標籤來使剃鬚刀標記和內容進行混合。

樣品:

<text> 
    @Html.ActionLink("Edit", "Edit", new { id = item.Id }) | 
    @Html.ActionLink("Details", "Details", new { id = item.Id }) 
    @if(item.State == State.Y) 
    { 
     @: | @Html.ActionLink("Continue", "Start", new { id = item.Id }) 
    } 
</text> 
0

有剃刀的HtmlHelper稱爲原始(),它會做你需要什麼,它不執行HTML編碼輸出的內容。所以你可以使用@ Html.Raw(Html.ActionLink(...)+「」+ Html.AmctionLink(...)),你將得到你的動作鏈接的HTML,由空格或你正在使用的任何字符組合作爲分隔符。

接受的答案是無效的Razor標記,@符號後面必須跟着「:」,「(」或C#標識符,第一行應該簡單,我也覺得必須使用如此多的內容標識符(和@ :)使得它更容易出錯並且難以閱讀/輸入。如果沒有更正,請考慮更改正確答案。