防止 ASP.NET 对输出中的字符串进行编码

发布于 2024-08-31 19:16:38 字数 632 浏览 3 评论 0 原文

当页面呈现时,如何阻止 ASP.Net 对列表项中的锚标记进行编码?

我有一个对象的集合。每个对象都有一个链接属性。我执行了 foreach 并尝试在 BulletedList 中输出链接,但 ASP 对所有链接进行了编码。

有什么想法吗?谢谢!

这是有问题的代码片段。当用户选择专业时,我使用 SelectedIndexChange 事件来清除并添加指向 BulletedList 的链接:

if (SpecialtyList.SelectedIndex > 0)
    {
        PhysicianLinks.Items.Clear();

        foreach (Physician doc in docs)
        {
            if (doc.Specialties.Contains(SpecialtyList.SelectedValue))
            {
                PhysicianLinks.Items.Add(new ListItem("<a href=\"" + doc.Link + "\">" + doc.FullName + "</a>"));    
            }
        }
    }

How can I stop ASP.Net from encoding anchor tags in List Items when the page renders?

I have a collection of objects. Each object has a link property. I did a foreach and tried to output the links in a BulletedList, but ASP encoded all the links.

Any idea? Thanks!

Here's the offending snippet of code. When the user picks a specialty, I use the SelectedIndexChange event to clear and add links to the BulletedList:

if (SpecialtyList.SelectedIndex > 0)
    {
        PhysicianLinks.Items.Clear();

        foreach (Physician doc in docs)
        {
            if (doc.Specialties.Contains(SpecialtyList.SelectedValue))
            {
                PhysicianLinks.Items.Add(new ListItem("<a href=\"" + doc.Link + "\">" + doc.FullName + "</a>"));    
            }
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

乜一 2024-09-07 19:16:38

您可以用转发器替换项目符号列表,

而不是 PhysicianLinks.Items.Add(new ListItem("" + doc.FullName + "< /a>")); ,将 doc.Link 添加到列表对象并使用它来绑定中继器。您可以在中继器项目模板中包含任何您想要的 html

类似

List<string> docLinks=new List<string>();
    if (SpecialtyList.SelectedIndex > 0)
        {


            foreach (Physician doc in docs)
            {
                if (doc.Specialties.Contains(SpecialtyList.SelectedValue))
                {
                  docLinks.add(doc.Link) ;
               }
            }
            Repeater1.DataSource=docLinks;
            Repeater1.DataBind();
        }

And In ASPX

<ul>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
            <li><a href="<%# Container.DataItem.ToString()%>"><%# Container.DataItem.ToString()%></a></li>
            </ItemTemplate>
        </asp:Repeater>
</ul>

You can replace the Bulletedlist with a repeater

Instead of PhysicianLinks.Items.Add(new ListItem("<a href=\"" + doc.Link + "\">" + doc.FullName + "</a>")); , add doc.Link to a List Object and use it to bind the repeater. You can include any html you want in the repeater itemtemplate

Something like

List<string> docLinks=new List<string>();
    if (SpecialtyList.SelectedIndex > 0)
        {


            foreach (Physician doc in docs)
            {
                if (doc.Specialties.Contains(SpecialtyList.SelectedValue))
                {
                  docLinks.add(doc.Link) ;
               }
            }
            Repeater1.DataSource=docLinks;
            Repeater1.DataBind();
        }

And In ASPX

<ul>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
            <li><a href="<%# Container.DataItem.ToString()%>"><%# Container.DataItem.ToString()%></a></li>
            </ItemTemplate>
        </asp:Repeater>
</ul>
小嗲 2024-09-07 19:16:38

给我们一个例子......对象的确切类型/值以及正在呈现为 HTML 的内容。

如果您正在谈论 ASP.NET 将 & 更改为 & ...您有时可以通过使用ASCII 代码版本而不是 HTML 快捷方式:&

Give us an example... the object's exact type/value and what is being rendered to HTML.

If you're talking about ASP.NET changing & to &amp; ... you can sometimes get around this sort of thing by using the ASCII code version instead of the HTML shortcut: &

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文