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

C# 如何在Razor View MVC中将文本转换为超链接或ActionLink#,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我试图在MVC Razor视图中的表中显示地址列表。我这样做了,但现在我需要将这些文本转换为超链接或操作链接,如果我们点击那个地址,我有一个单独的操作控制器 这是我的视图,它显示了表中的地址列表 <table id="list" class="display"><thead> <tr><th> Available Addresses </th> &l

我试图在MVC Razor视图中的表中显示地址列表。我这样做了,但现在我需要将这些文本转换为超链接或操作链接,如果我们点击那个地址,我有一个单独的操作控制器

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

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

可用地址
贷款状况
@foreach(Model.AddressAndStatus中的var im)
{
@DisplayFor(m=>im.Address)
@DisplayFor(m=>im.Status)
}

不使用DisplayFor,我们可以使用任何帮助程序将其显示为链接而不是文本吗?

假设状态是链接文本,地址是链接目标,只需使用纯html即可。没有必要总是使用助手

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

您可以这样做:

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);
  @Html.AddressLink(im.Address, im.Status)
从您的角度对其进行如下调用:

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);
  @Html.AddressLink(im.Address, im.Status)
请不要忘记使用正确的名称空间

 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());
}
您需要将“控制器”名称更改为您的名称,并将其命名为:

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);
  @Html.AddressLink(im.Address, im.Status)

非常明显的答案。。。非常感谢。