2011-11-29 53 views
0

我有一個aspnet web應用程序託管在我的本地iis上。在其他Web應用程序中,我想要一個鏈接,當我點擊鏈接時,它應該打開託管的Web應用程序而不詢問憑據。我正在使用下面的代碼來做到這一點,但它不工作。aspnet c#form submision using javascript

<html> 
<script type="text/javascript"> 
    function OpenURL() { 
     var form = document.createElement("form"); 
     form.setAttribute("method", "POST"); 
     form.setAttribute("action", "http://10.10.10.10/Domain/Login.aspx"); 

     var hiddenField = document.createElement("input"); 
     hiddenField.setAttribute("type", "hidden"); 
     hiddenField.setAttribute("name", "UserName"); 
     hiddenField.setAttribute("value", "UserTest"); 
     form.appendChild(hiddenField); 

     var hiddenField2 = document.createElement("input"); 
     hiddenField2.setAttribute("type", "hidden"); 
     hiddenField2.setAttribute("name", "Password"); 
     hiddenField2.setAttribute("value", "PasswordTest"); 
     form.appendChild(hiddenField2); 

     document.body.appendChild(form); 
     form.submit(); 
    } 
    </script> 
<body onload="OpenURL();"> 
</body> 
</html> 

任何人都可以幫我嗎?

回答

0

你可以嘗試把實際的HTML標籤在你那麼onLoad的調用您只需提交表單,像這樣: (僞代碼只是爲了給一個提示,無法ATM測試)

<body onLoad="javascript:myform.submit();"> 
    <form name="myform"...> 
    <input ...> 
    <input ..> 
    </form> 
</body> 
+0

感謝您的回覆。 – Krrish

+0

現在我使用下面的代碼根據您的建議,但仍然無法正常工作。僅供參考 - 在我的目標Web應用程序中,我使用了登錄控制。

;
Krrish

0

試這對所有輸入元素:

hiddenField.type = "hidden"; 
hiddenField.name = "UserName"; 
hiddenField.value = "UserTest"; 

代替:

hiddenField.setAttribute("type", "hidden"); 
hiddenField.setAttribute("name", "UserName"); 
hiddenField.setAttribute("value", "UserTest"); 
0

我認爲它會如果您在託管的Web應用程序上設置了適當的端點,而不是直接使用JavaScript傳遞/分配證書,那麼最好。

您可以創建一個模仿登錄功能提交控制方法,並傳遞加密信息和託管Web應用程序對其進行解碼,並設置着陸頁已處理加密的憑據後。喜歡的東西,

http://10.10.10.10/Domain/LoginRedirect?data=your_encrypted_data_here 

但是,如果你正在嘗試做的是獲取/保存/更新您的託管網絡應用程序的一些信息,你可以嘗試創建一個API端點和認證/執行使用REST風格的調用。