Asp.net mvc 将2个MvcHtmlString组合在一起,内部为#x27;格式';

Asp.net mvc 将2个MvcHtmlString组合在一起,内部为#x27;格式';,asp.net-mvc,webgrid,Asp.net Mvc,Webgrid,这个解决方案给了我一个编码的HTML,我能做些什么呢?这个答案基于找到的问题 其思想是使用标记来允许Razor标记和内容混合 样本: grid.Column(format: v => @Html.ActionLink(@item.Name, "Details", new { id = item.Id }).ToString() + (v.State == State.Y ? @Html.Actio

这个解决方案给了我一个编码的HTML,我能做些什么呢?

这个答案基于找到的问题

其思想是使用标记来允许Razor标记和内容混合

样本:

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()
)

@ActionLink(“编辑”,“编辑”,新的{id=item.id})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.id})
@如果(item.State==State.Y)
{
@:|@Html.ActionLink(“继续”,“开始”,新建{id=item.id})
}

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

所接受的答案不是有效的剃须刀标记,@符号后面必须有“:”、“(或)或C标识符。第一行应该是简单的。我也觉得必须使用这么多的内容标识符(和@:)使它更容易出错和难以读取/类型。如果没有纠正,请考虑更改正确答案。

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