Вопрос
<ч />
Я пытаюсь создать быструю и простую страницу 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
Спасибо,
Chris