C# 如何在Razor View MVC中将文本转换为超链接或ActionLink#
我试图在MVC Razor视图中的表中显示地址列表。我这样做了,但现在我需要将这些文本转换为超链接或操作链接,如果我们点击那个地址,我有一个单独的操作控制器 这是我的视图,它显示了表中的地址列表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
<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)
非常明显的答案。。。非常感谢。