在'格式'中合并2个MvcHtmlString Togther

时间:2013-08-20 14:57:22

标签: asp.net-mvc webgrid

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,我可以做什么呢?

2 个答案:

答案 0 :(得分:0)

此答案基于发现的here

的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> 

答案 1 :(得分:0)

有一个名为Raw()的Razor HtmlHelper可以完全满足您的需要,它可以在不执行HTML编码的情况下输出内容。因此,您可以使用@ Html.Raw(Html.ActionLink(...)+“”+ Html.AmctionLink(...)),您将获得动作链接的HTML,由空格或您正在使用的任何字符组合作为分隔符。

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