在Razor / MVC3中使用@ Html.ActionLink获取原始文本?

时间:2011-08-01 17:23:20

标签: asp.net-mvc-3 formatting razor

鉴于以下Html.ActionLink:

@Html.ActionLink(Model.dsResults.Tables[0].Rows[i]["title"].ToString(), "ItemLinkClick",
    new { itemListID = @Model.dsResults.Tables[0].Rows[i]["ItemListID"], itemPosNum = i+1 }, ...

模型中的数据在标题字段中包含HTML。但是,我无法显示HTML编码的值。即。带下划线的文字显示在其周围<u>....</u>

我在ActionLink的文本部分尝试了Html.Raw,但没有去。

有什么建议吗?

5 个答案:

答案 0 :(得分:13)

如果您仍想使用帮助程序为链接文本创建原始HTML的操作链接,那么我认为您不能使用Html.ActionLink。但是,this stackoverflow question的答案描述了创建一个执行此操作的帮助程序。

我会手动编写链接HTML并使用Url.Action帮助程序创建Html.ActionLink将创建的URL:

<a href="@Url.Action("ItemLinkClick", new { itemListID = @Model.dsResults.Tables[0].Rows[i]["ItemListID"], itemPosNum = i+1 })">
    @Html.Raw(Model.dsResults.Tables[0].Rows[i]["title"].ToString())
</a>

答案 1 :(得分:0)

MVCHtmlString.Create应该可以解决问题。

答案 2 :(得分:0)

使用下面的actionlink,您无需在模型中传递html。让css类或内联样式确定href的装饰方式。

@Html.ActionLink(Model.dsResults.Tables[0].Rows[i]["title"], "ItemLinkClick", "Controller", new { @class = "underline", style="text-decoration: underline" }, null)

答案 3 :(得分:0)

那些你应该走另一条道路的案例

@{
    string title = Model.dsResults.Tables[0].Rows[i]["title"].ToString(),
           aHref = String.Format("/ItemLinkClick/itemListID={0}&itemPosNum={1}...", 
                       Model.dsResults.Tables[0].Rows[i]["ItemListID"],
                       i+1);
}

<a href="@aHref" class="whatever">@Html.Raw(title)</a>

请记住,Razor助手帮助您,但您仍然可以用HTML方式做事。

答案 4 :(得分:0)

你也可以使用它:

<a class='btn btn-link' 
   href='/Mycontroler/MyAction/" + item.ID + "'
   data-ajax='true' 
   data-ajax-method='Get' 
   data-ajax-mode='InsertionMode.Replace' 
   data-ajax-update='#Mymodal'>My Comments</a>