2011-03-08 49 views
2

目標是從傳統asp使用發佈數據彈出一個asp.net頁面,但是,asp.net頁面始終有Request.Form變量爲空,並顯示RequestType get 。發送數據到asp.net頁面從傳統asp

  1. 我已經全部剝離代碼從ASP出來,測試接收從asp.net頁面上的HTML頁面發送表單變量,並能正常工作。複製相同的HTML表單到ASP頁面仍然給

    <html> 
    <head></head> 
    <body> 
        <form method="post" name="form" action="http://localhost:51307"> 
         <input name="uid" value="1" /> 
         <input type="submit" name="Submit" /> 
        </form> 
    </body> 
    

ASP的網站使用了框架沒有的Request.Form數據和請求類型獲取和形式從子幀中發送,我不確定這是否是問題。

2. 假設這個工作,我曾想過在asp中提交一個表單,並使用表單的onsubmit事件來彈出頁面,該頁面將發送表單變量作爲發佈數據。這是做這件事的最好方法嗎?

UPDATE 的框架似乎是這裏有毛病不知何故,我從形式張貼的框架頁面內到另一個傳統的ASP頁面,然後重定向從這個到asp.net頁面。

+0

我想這是因爲「跨越不同域的導航窗口和框架」在默認情況下被禁用,這可能意味着您不能通過表單數據出於安全原因。所以,當你不使用幀時,問題現在已經解決了。 – 2011-03-08 15:32:33

+0

是的,它似乎正在工作,但我會想在未來的框架中做到這一點,你可以彈出導航窗口..在一個答案,我會接受它,因爲這是真正的問題。 – 2011-03-08 16:10:47

+0

Shadow Wizard - 你想把上面的評論回答給我接受嗎? – 2011-03-11 17:41:02

回答

2

這可能是因爲IE瀏覽器默認禁用了「在不同域中導航窗口和框架」,這意味着您由於安全原因無法傳遞表單數據。

0

ASP.NET需要設置特定的表單域(通常作爲隱藏域,儘管HTTP POST顯然不知道其差異),因此入站請求被視爲有效,從而填充相關變量。

如果我記得,您需要設置__EVENTTARGET,__EVENTARGUMENT和__VIEWSTATE。

然後,您的ASP.NET代碼需要能夠處理髮送的內容,因爲默認處理程序預計最少會有__VIEWSTATE中的某些內容。所以,你需要重寫頁面中的ViewState處理程序。稍後在工作時我可以更新更多的信息,因爲我知道我以前做過這個。

+0

然而,這是有道理的,但是,asp.net通常很高興地接受request.form,並且它在我進入記事本時添加表單,使用方法post添加表單並通過在瀏覽器中打開此表單提交,但當相同表單處於在框架中的asp頁面。 – 2011-03-08 14:41:05

+0

只有當您想要「真正的」PostBack或保留ViewState時,才需要這些東西。否則,ASP.NET中的Request.Form的行爲與傳統ASP中的行爲完全相同。 – 2011-03-08 15:26:59

0

問題在於重定向。當您重定向頁面時,它會創建GET請求而不是POST請求,因此不會有任何表單數據。

你的選擇是:

  1. 附加形式值的查詢字符串。
  2. 動態生成對應於發佈的Request.Form集合的表單,並在body onload事件期間使用Javascript將其提交到ASP.NET頁面。
+0

從問題和代碼判斷,他用'method =「post」'點擊了表單的提交按鈕',所以在這裏不是這種情況。 – 2011-03-08 15:51:28

+0

閱讀他的更新。他將表單提交到另一個框架中的頁面,然後從該框架調用重定向。這會生成獲取請求。 – smartcaveman 2011-03-08 15:52:56

相關問題