c# - 使用 ASP.NET 编辑 HTML 元标记

标签 c# asp.net html

问题


我正在尝试构建一个快速且简单的 ASP.NET 页面,该页面使用元重定向将用户重定向到新的 URL。唯一的问题是我还需要传递当前请求的 GET 值。我找到了一种使用 HtmlMeta 对象在后面的代码中以编程方式执行此操作的方法。但是,我想避免使用后面的代码,而是直接将此代码放入 ASPX 页面中。

这是我到目前为止所拥有的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <meta http-equiv="refresh" content='10;url=http://contact.test.net/main.aspx?<%=Request.QueryString.ToString()%>' />
</head>
</html>


但是,这会输出以下元标记:

<meta http-equiv="refresh" content="10;url=http://contact.test.net/main.aspx?<%=Request.QueryString.ToString()%>" />

那么有没有办法转义该属性,以便 ASP.NET 代码真正执行?

解决方案1


目前,我通过删除 HTML 属性中的引号解决了我的问题。从而使元标记如下:


<meta http-equiv="refresh" content=10;url=http://contact.test.net/main.aspx?<%=Request.QueryString.ToString()%> />



虽然这解决了问题,但我很好奇是否有人知道更正确的方法来执行此操作,我可以转义 HTML 属性的文字引号。


解决方案2(最终选择的解决方案)


根据 Scott 非常赞赏的建议,我决定继续从后面的代码中执行此操作。对于任何好奇这是如何实现的人:


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim nRef As String = Request.QueryString("n")
        Dim sRef As String = Request.QueryString("s")

        Dim contentAttrBuilder As New StringBuilder("0;http://contact.cableone.net/main.aspx")
        contentAttrBuilder.Append("?n=")
        contentAttrBuilder.Append(nRef)
        contentAttrBuilder.Append("&s=")
        contentAttrBuilder.Append(sRef)

        Dim metaRedirect As New HtmlMeta()
        metaRedirect.HttpEquiv = "refresh"
        metaRedirect.Content = contentAttrBuilder.ToString()

        Me.Header.Controls.Add(metaRedirect)

    End Sub

谢谢,
克里斯

最佳答案

也许 head 标签内的这段代码正是您所需要的:

<%= string.Format("<meta http-equiv='refresh' content='10;url=http://contact.test.net/main.aspx?{0}' />", Request.QueryString.ToString()) %>

但是,我不建议您这样做。例如,这个网址:

http:/mysite.with.metaredirect?<script>alert('hello!!!')</script>

如果您没有禁用 ASP.NET 的安全功能,则会抛出异常,并且您永远不知道是否有人(甚至您自己)会出于其他原因关闭这些功能。

强烈建议对查询字符串进行代码隐藏按摩!

关于c# - 使用 ASP.NET 编辑 HTML 元标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417510/

相关文章:

c# - 如何将 DataGrid.Resources 应用到所有 DataGrid

c# - 重构检查不同文件扩展名的 if-else 语句

css - ASP .NET 不加载 CSS

html - 网站在 ie78 下不工作

html - 侧边栏 div 不垂直拉伸(stretch)

c# - 如何防止 session 超时

c# - 以编程方式发送短信

c# - Linq 相当于分组选择

c# - 如何访问asp对象

html - 如何选择 "last-child of a last-child"?