2010-01-13 28 views
0

我們已經要求客戶將在其自己的域上運行的網站移至其他應用的子文件夾。使用母版頁更改ASP.NET窗體上的網址

我已經使用ISAPI重寫代理實現了這一點。

但是,有一種形式在網站中發佈回帖。生成的來自ASP.NET的操作url是「/sign-up.aspx?」。這將回發發送到網站的根目錄。

我想將其更改爲「sign-up.aspx?」(沒有領先的斜線)。如果我沒有使用母版頁,這可以很好,因爲我可以獲取對錶單的引用並更改它的操作(這是.NET 3.5 SP1)。我試圖在我的控件中使用下面的代碼來獲取表單的引用,但它似乎沒有做任何事情。它找到表單,但操作未設置爲該值。

 HtmlForm form = ControlLocator.FindControl<HtmlForm>(Page.Master.Master, "form1"); 
     form.Action = "sign-up.aspx?"; 

這是在Page_Load中和ControlLocator.FindControl是本http://www.west-wind.com/Weblog/posts/5127.aspx

任何想法端口?

乾杯, 羅布

回答

0

最終發現它是umbraco的Form.browser,它在我改變後重寫了後發的URL。 (在我原來的問題中沒有提及使用umbraco的道歉)。

1

你嘗試過在page_prerender幹什麼呢?

可能是所有主內容合併尚未在page_load中完成。假設HtmlForm是正確的類型,並且表單實際上被稱爲'form1' - 我相信這是正確的。

+0

我確實在page_load之前嘗試了預渲染,沒有快樂。沒有空引用,所以表單肯定被找到。無論如何感謝您的答案! :)也許我需要在生命週期的後期做這件事? – 2010-01-13 22:10:49

+0

只檢查 - 預渲染應該發生在Page_Load之後 - 它是頁面被轉儲前的最後階段之一。你的意思是Pre_Init嗎? 甚至可以在渲染開始時嘗試它;儘管Asp.Net可能完全忽略了你給它的任何價值。在嘗試設置它之前,Form.Action的價值是什麼? – 2010-01-13 22:39:02

1

如果您在註冊表單上有一個按鈕,您可以使用它的postBackUrl屬性將回發重定向到不同的URL。

<asp:button id="SignUpBtn" 
      runat="server" 
      postbackurl="sign-up.aspx" 
      value="Sign Up" /> 

您可以在"Cross-page Posting in ASP.NET Web Pages"下找到更多信息。

4

很好解決你的問題。 但是對於想要更改aspnetform的動作URL的用戶,請在Page_Load事件中使用此簡單代碼(即使他們有母版頁)。

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.Form.Action = "URL Goes Here"; 
}