如何在Razor View MVC C#中将文本转换为HyperLink或ActionLink

时间:2013-12-05 15:48:14

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我正在尝试在MVC Razor视图中显示表中的地址列表。我这样做了,但现在我需要将这些文本转换为HyperLinks或Action Links,如果我们单击该地址,我将拥有一个单独的动作控制器。

这是我的视图,显示表格中的地址列表

<table id="list" class="display"><thead>
        <tr><th>
            Available Addresses
            </th>
            <th>
                Loan Statuses
            </th>
        </tr>
        </thead>
        <tbody>

            @foreach (var im in Model.AddressAndStatus)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(m => im.Address)

                    </td>
                    <td>
                        @Html.DisplayFor(m => im.Status)
                    </td>

                </tr>
            }



        </tbody>
    </table>

我们可以使用任何助手将其显示为链接而不是文本吗?

,而不是使用DisplayFor

2 个答案:

答案 0 :(得分:2)

假设状态是链接文本,地址是链接目标,只需使用普通的html。没有必要总是使用帮助器。

<a href="@(im.Address)">@(im.Status)</a>

答案 1 :(得分:0)

你会这样做:

public static MvcHtmlString AddressLink(this HtmlHelper htmlHelper, string address)
{
    var tb = new TagBuilder("a");
    tb.Attributes.Add("href", address);
    tb.SetInnerText(address);
    return new MvcHtmlString(tb.ToString());
}

从您的视图中调用它:

 @Html.AddressLink(im.Address);

ps不要忘记使用正确的名称空间,即

 namespace System.Web.Mvc

<强>更新

如果想要一个具有基于状态的操作的帮助程序,您可以执行以下操作:

 public static MvcHtmlString AddressLink(this HtmlHelper htmlHelper, string address, string status)
{
    var sb = new StringBuilder();
    sb.Append(htmlHelper.ActionLink(address, status, "Controller"));
    return new MvcHtmlString(sb.ToString());
}

您需要将“控制器”名称更改为您的名称,并将其称为:

  @Html.AddressLink(im.Address, im.Status)