我正在尝试在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答案 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)