使用javascript的asp net c#表单提交

时间:2011-11-29 13:00:12

标签: javascript asp.net

我有一个aspnet web应用程序,它托管在我的本地iis上。在其他Web应用程序中,我想要一个链接,当我点击链接时,它应该打开我的托管Web应用程序而不询问凭据。我使用下面的代码来做到这一点,但它不起作用。

<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>

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试在您的onLoad中添加实际的html标签,只需提交表单,如下所示: (伪代码只是给出一个提示,不能测试它atm)

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

答案 1 :(得分:0)

尝试所有输入元素:

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

而不是:

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

答案 2 :(得分:0)

我认为最好是在托管的Web应用程序上设置正确的端点,而不是直接使用javascript传递/分配凭据。

您可以创建一个模拟登录提交功能的控制器方法,传递加密信息并在托管Web应用程序上解码,并在处理加密凭据后设置登录页面。像,

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

但是,如果您要做的是在托管的Web应用程序上获取/保存/更新某些信息,您可以尝试创建api端点,并使用restful调用进行身份验证/执行。