如何在Html.ActionLink中粘贴linkText的片段?

时间:2011-01-27 00:59:36

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我有这个:

<li><%:Html.ActionLink(user.Email.Replace(Model.SearchString, "<b>" + Model.SearchString + "</b>"), "LoginEdit", "Admin", new { area = "Staff", webUserKey = user.WebUserKey }, null)%>, last login: <%:loginString%></li>

如您所见,我希望电子邮件字符串中与Model.SearchString匹配的部分加粗。考虑到我的代码的上下文,我无法弄清楚实现这一点的语法。

有什么想法吗?

目标是这样的(假设用户搜索“john”):

<a href="Admin/Login/Edit/456546"><b>john</b>@gmail.com</a>

2 个答案:

答案 0 :(得分:3)

每当遇到这种情况时,我都会尽量不在HTML帮助程序中嵌入HTML。另外,我认为分解你的代码将有助于将来的维护 - 你在一个函数调用中做了很多。

我更喜欢这样做:

<li> 
    <a href="<%: Url.Action("LoginEdit", "Admin", new { area = "Staff", webUserKey =user.WebUserKey }) %>"> 
        <%: user.Email.Replace(Model.SearchString, "") %>
        <b><%: Model.SearchString %></b>
    </a>
    last login: <%: loginString %>
</li>

这是一些代码行,但它更容易破译正在发生的事情。

答案 1 :(得分:2)

我认为问题是<%: %>的输出是HTML编码的。因此,您的<b>标记可能已编码,您会在呈现的HTML中看到实际标记,而不是粗体文本。

如果user.Email是受信任的值,您可以跳过HTML编码输出。

<li><%= Html.ActionLink(user.Email.Replace(Model.SearchString, "<b>" + Model.SearchString + "</b>"), "LoginEdit", "Admin", new { area = "Staff", webUserKey = user.WebUserKey }, null)%>, last login: <%:loginString%></li>

有关详细信息,请参阅:http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx