如何将FORM从HTML发布到ASPX页面

24 asp.net

如何将表单从HTML页面发布到ASPX页面(2.0)并能够读取值?

我目前有一个使用成员资格提供程序的ASP.NET站点,一切正常.用户可以从Login.aspx页面登录.

我们现在希望能够让用户直接从另一个网站登录 - 这基本上是一个静态HTML页面.用户需要能够在此HTML页面上输入他们的名称和密码,并将其POST到我的Login.aspx页面(我可以在其中手动登录).

是否可以将表单值从HTML传递到ASPX?我已经尝试了一切,Request.Form.Keys集合总是空的.我不能使用HTTP GET,因为这些是凭据,不能在查询字符串上传递.

我所知道的唯一方法是iframe.

Pse*_*ist 28

很有可能.我嘲笑了3页,应该给你一个概念证明:

.aspx页面:

<form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:TextBox TextMode="password" ID="TextBox2" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

代码背后:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    For Each s As String In Request.Form.AllKeys
        Response.Write(s & ": " & Request.Form(s) & "<br />")
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

单独的HTML页面:

<form action="http://localhost/MyTestApp/Default.aspx" method="post">
    <input name="TextBox1" type="text" value="" id="TextBox1" />
    <input name="TextBox2" type="password" id="TextBox2" />
    <input type="submit" name="Button1" value="Button" id="Button1" />
</form>
Run Code Online (Sandbox Code Playgroud)

......并按预期反刍形式值.如果这不起作用,正如其他人所建议的那样,使用流量分析工具(fiddler,ethereal),因为某些东西可能不会出现在你期望的地方.

  • 这在我的ASP.NET 4中不起作用,从搜索它似乎可能与Viewstate有关.我试图禁用它但没有运气,登录仍然没有发生. (4认同)

Chr*_*ris 19

如果您的html输入都没有NAME,则Request.Form.Keys集合将为空.在你做了一段时间的.NET之后,很容易忘记将它们放在那里.只需命名它们就可以了.

  • 我花了很多年才意识到这一点.当您在.Net中执行此操作时,asp.net引擎会自动添加名称atttribute.如果您"手动"创建html表单,很容易忘记它,然后没有任何内容发布,你想知道为什么. (2认同)

use*_*032 2

您确定您的 HTML 表单是正确的,并且确实执行了 HTTP POST 操作吗?我建议运行Fiddler2,然后尝试通过 Login.aspx 登录,然后登录远程 HTML 站点,然后比较发送到服务器的请求。对我来说,ASP.Net 总是工作得很好——如果 HTTP 请求包含有效的 POST,我可以使用 Request.Form 获取值...