C# innerthtml的替代方案

C# innerthtml的替代方案,c#,asp.net,C#,Asp.net,我目前正在使用服务器端C#使用innerHTMl将html标记附加到div。在这一点上,我有点担心innerHTML没有被加密,这可能会导致一些安全漏洞 var myRequestCount = client.GetRequests(id); var myRequestMsgs = client.GetRequests(id).OrderByDescending(rd => rd.CreatedDate).Take(4); lblNoOfRequests.

我目前正在使用服务器端C#使用innerHTMl将html标记附加到div。在这一点上,我有点担心innerHTML没有被加密,这可能会导致一些安全漏洞

 var myRequestCount = client.GetRequests(id);
        var myRequestMsgs = client.GetRequests(id).OrderByDescending(rd => rd.CreatedDate).Take(4);
        lblNoOfRequests.Text = myRequestCount.Count().ToString();
        if (myRequestMsgs.Count() != 0)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<ul style='list-style-type:disc !important'>");
            foreach (var requestMsgs in myRequestMsgs)
            {

                sb.Append("<a href='#' onclick='return openMyRequestRadWindow(" + requestMsgs.RequestNo + " );' style='color:#f60;font-size:12px;line-height:0.5em'>" + MyZimraHelpers.TruncateAtWord(requestMsgs.Subject, 50) + "</a><br/>");

            }

            myRequestContainer.InnerHtml = sb.ToString();
        }
        else
        {
            myRequestContainer.InnerHtml = "No Request was found";
            dvMyRequestVwMore.Visible = false;
        }
        client.Close();
var myRequestCount=client.GetRequests(id);
var myRequestMsgs=client.GetRequests(id).OrderByDescending(rd=>rd.CreatedDate).Take(4);
lblNoOfRequests.Text=myRequestCount.Count().ToString();
如果(myRequestMsgs.Count()!=0)
{
StringBuilder sb=新的StringBuilder();
sb.追加(“
    ”; foreach(myRequestMsgs中的var requestMsgs) { sb.追加(“
    ”); } myRequestContainer.InnerHtml=sb.ToString(); } 其他的 { myRequestContainer.InnerHtml=“未找到任何请求”; dvMyRequestVwMore.Visible=false; } client.Close();
如果我使用server.htmlencode(sb.Tostring()),那么在浏览器中,所有内容都显示为纯html标记,与使用innertext相同。对上述输出进行编码的最佳方式是什么


谢谢

您可以在视图内部编写循环,而不是从代码隐藏将html注入控件。我经常使用这种模式

<% foreach (var requestMsgs in myRequestMsgs)
    { %>
        <a href="#"
           onclick="return openMyRequestRadWindow(<%= requestMsgs.RequestNo %>);"       
           style="color:#f60; font-size:12px; line-height:0.5em; " >
           <%= MyZimraHelpers.TruncateAtWord(requestMsgs.Subject, 50) %>
        </a><br/>
 <% } %>



旁注:您真的不应该在一行中混合使用HTML、CS、JavaScript和CSS……这看起来比OP做的要好得多。什么是MyZimraHelper?@RobertHarvey我假设是自定义类。我只是把它从手术室拿出来和他做的相符。哦,就是这样。我第一次没看到。