【问题标题】:Getting raw text using @Html.ActionLink in Razor / MVC3?在 Razor / MVC3 中使用 @Html.ActionLink 获取原始文本?
【发布时间】:2011-08-01 17:23:20
【问题描述】:

给定以下 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 编码值。 IE。带下划线的文本显示在其周围,并带有 <u>....</u>

我在 ActionLink 的文本部分尝试了 Html.Raw,但不行。

有什么建议吗?

【问题讨论】:

  • 为什么将 html 放在模型中而不是视图中?如果您需要为它添加下划线,请为此添加样式或类属性。
  • 从模型返回的数据是基于关键字格式化的。因此,需要在该级别进行格式化。

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


【解决方案1】:

如果您仍想使用帮助程序为链接文本创建带有原始 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。我一直在整个网络上寻找基于非助手的解决方案,但我得到的只是基于助手的解决方案。你让我今天一整天都感觉很好!干杯:)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 装饰不是针对整个字符串,只是一部分,所以我认为不会这样做。
    【解决方案4】:

    那些是你应该走另一条路的情况

    @{
        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 方式做事。

    【讨论】:

      【解决方案5】:

      你也可以这样用:

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

      【讨论】:

        猜你喜欢
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        • 2012-03-05
        • 2012-03-18
        相关资源
        最近更新 更多