我有这个:
<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>
答案 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