好的,我們今天在工作中遇到了一個問題。這是一個奇怪的,我從來沒有想過要嘗試。服務器控件中的ASP.NET內聯代碼
<form id="form1" runat="server" method="post" action="Default.aspx?id=<%= ID %>" >
好的,這是非常醜陋的,我不會嘗試過自己。它出現在幾年前編寫的一些代碼中,但直到本週末一直在工作,直到在代碼託管的客戶端的Web服務器上安裝了一堆更新之後。
這樣做的實際結果是下面的HTML:
<form name="form1" method="post" action="Default.aspx?id=<%= ID %>" id="form1">
的網址結束這樣的:
http://localhost:6735/Default.aspx?id=<%= ID %>
正如你所看到的,證明了「<」符號是在ASP.NET實際處理頁面之前進行編碼。對我來說這似乎很奇怪,因爲我認爲即使它不是很漂亮,但它應該起作用。我很困惑。
更糟糕的是,客戶堅持認爲這是IE中的一個錯誤,因爲它似乎可以在Firefox中使用。事實上,它也在Firefox中被打破,除了某些原因,Firefox將它視爲0.
關於爲什麼發生這種情況以及如何輕鬆修復它的任何想法?我試圖在服務器控件中呈現的所有內容都會越過。
編輯 好吧,我發現了一個「修復」
<form id="form1" runat="server" method="post" action='<%# String.Format("Default.aspx?id={0}", 5) %>' >
但是,這需要我調用DataBind這是原來的黑客加入更多的黑客攻擊的。猜猜如果沒有人想到其他事情,我將不得不這樣做。
哇!你確定沒有其他方法可以解決這個問題嗎?你是否正在做一些跨頁的回帖?很少看到爲webform應用程序指定的「操作」。 – 2010-05-25 00:44:53
它實際上發回自己。確實很奇怪!這是所有內嵌代碼「後面」的Web表單。我同意,我從來沒有在web表單中使用action屬性。從來沒有需要。 – John 2010-05-25 01:02:42