2011-01-27 17 views
1

私はこれを持っている:あなたが見ることができるようにHtml.ActionLinkでlinkTextの断片をBOLDする方法は?

<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に一致する電子メールの文字列の部分は太字ことにしたいです。私のコードの文脈を考えれば、これを実現する構文を理解することはできません。

アイデア?

目標は、このような何か(と仮定すると、ユーザが「ジョン」で検索)である:私は問題が<%: %>の出力はHTMLエンコードされていることだと思います

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

「最終的な」マークアップの外観を表示することはできますか? –

+0

私は最終的なマークアップ目標を掲示しました。 – Blackcoil

+1

レンダリングされている実際のマークアップは何ですか? –

答えて

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> 

それは、コードのいくつかのより多くの行だが、それはそれははるかに簡単に何が起こっているのかを解読することができます。

2

。したがって、<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

+1

と信頼されていない場合は、ビューに渡す前にViewModelでエンコードできます。 –