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,我能做些什么呢?

4

2 回答 2

0

此答案基于此处找到的 SO 问题

这个想法是使用标签来允许 Razor 标记和内容混合。

样本:

<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> 
于 2013-08-21T08:49:28.847 回答
0

有一个名为 Raw() 的 Razor HtmlHelper 将完全满足您的需求,它输出内容而不执行 HTML 编码。所以你可以使用@Html.Raw(Html.ActionLink(...) + " " + Html.AmctionLink(...)) 你会得到你的动作链接的HTML,由空格或你正在使用的任何字符组合作为分隔符。

接受的答案是无效的 Razor 标记,@ 符号必须后跟“:”、“(”或 C# 标识符。第一行应该简单地是。我也觉得不得不使用这么多内容标识符(和@: ) 使其更容易出错且难以阅读/键入。如果未更正,请考虑更改正确答案。

于 2015-04-10T16:36:16.167 回答