Html.ActionLink和MvcHtmlString

时间:2011-08-20 02:58:52

标签: asp.net-mvc

我有一个如下所示的列表,这很好:

<ul class="vlistmenu">
    @foreach (var m in Model)
    {
        <li class="forum">@Html.ActionLink(m.LinkName, "Details", "Forum", new { id = m.Id }, null)</li>
    }
</ul>

现在我正在尝试从调用Html.ActionLink来格式化生成的MvcHtmlString并添加更多信息。但是下面的示例并没有像我希望的那样工作。

<ul class="vlistmenu">
    @foreach (var m in Model)
    {
        var link = m.LinkName + "<br /><a style=\"font-size:smaller\">By: Ronron (July 11, 2011)</a>");
        <li class="forum">@Html.ActionLink(link, "Details", "Forum", new { id = m.Id }, null)</li>
    }
</ul>

基本上我想要的是将文字字符串“By:Ronron(Jull 11,2011)”附加到我的模型中的信息,即m.LinkName。但是,我希望m.LinkName的字体大于附加的文字字符串。此外,文字字​​符串应从下一行开始,而不是紧接在m.LinkName旁边。组合的m.LinkName和附加的字符串将形成一个操作链接。

1 个答案:

答案 0 :(得分:2)

如果我理解正确你想要将html属性写入元素,那么你可以在html.actionlink html属性上声明它,就像你在代码上看到的那样(如果你想添加class属性,你需要用@symbol写: new {style =“font-size:smaller”,@ class =“xClass”}

<ul class="vlistmenu">
@foreach (var m in Model)
{
    var link = m.LinkName + "<br /><a style=\"font-size:smaller\">By: Ronron (July 11, 2011)</a>");
    <li class="forum">@Html.ActionLink(link, "Details", "Forum", new { id = m.Id },  new { style = "font-size:smaller"})</li>
}

除了您的评论,您还可以编写自定义助手

Raw ActionLink linkText

或者您可以通过url.action方法手动设置标记,以便根据您的控制器操作提供链接,但手动执行标记

<a href="@Url.Action("Details","Forum",new { id = m.Id })">@m.linkname<br /><span style="font-size:smaller">By: Ronron (July 11, 2011)</span></a>