代码之家  ›  专栏  ›  技术社区  ›  regex

使用ASP.NET编辑HTML元标记

  •  2
  • regex  · 技术社区  · 16 年前


    我正在尝试构建一个快速简单的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(最终选择的解决方案)


    
        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
    
    

    谢谢
    克里斯

    3 回复  |  直到 6 年前
        1
  •  3
  •   Jorge Alves    16 年前

    也许head标签中的代码就是您所需要的:

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

    ,我不建议你这样做。例如,此URL:

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



    暗号 按摩 查询字符串的名称是 细想过的!

        2
  •  1
  •   Jorge Alves    16 年前

    您是否尝试过以编程方式添加整个元标记?
    一旦获得要在服务器端运行的标签,就可以在页面_Load()上动态添加新标签,并可以指定其所有属性。

    这里详细描述了该过程:
    http://www.howtoadvice.com/SetMetaTags

        3
  •  0
  •   Michiel van Oosterhout    16 年前

    runat="server" 属性自 <head>