代码之家  ›  专栏  ›  技术社区  ›  Tim

如何将表单从HTML发布到ASPX页面

  •  24
  • Tim  · 技术社区  · 16 年前

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

    我目前有一个ASP.NET网站使用的成员资格提供和一切工作正常。用户可以从Login.aspx页面登录。

    是否可以将表单值从HTML传递到ASPX?我尝试了所有方法,Request.Form.Keys集合总是空的。我不能使用HTTPGET,因为这些是凭据,不能在查询字符串上传递。

    我知道的唯一方法就是一个iframe。

    8 回复  |  直到 16 年前
        1
  •  28
  •   Pseudo Masochist    16 年前

    这是 非常 可能吧。我模拟了3页,这应该给你一个概念证明:

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

    代码隐藏:

    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
    

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

        2
  •  19
  •   Christopher    16 年前

    如果您的html输入都没有名称,Request.Form.Keys集合将为空。在你做了一段时间.NET之后,很容易忘记把它们放在那里。只要说出他们的名字,你就可以走了。

        3
  •  2
  •   user8032    16 年前

    你确定你的HTML表单是正确的吗?事实上,你做了一个httppost吗?我建议你跑步 Fiddler2

        4
  •  1
  •   Flory    16 年前

    你当然可以。

    查看如何执行此操作的最简单方法是浏览到要发布到的aspx页面。然后将该页面的源代码另存为HTML。更改新html页上表单的操作,使其指向最初从中复制表单的aspx页。

        5
  •  1
  •   mjmcinto    16 年前

    你当然可以。创建一个HTML页面,其中包含login.aspx页面中必需的组件(如用户名等),并确保它们具有相同的ID。为了你的行动,确保它是一个职位。

        6
  •  1
  •   Karthick Kumar    11 年前

    在html表单中,需要提供额外的viewstate变量并在服务器页面中禁用viewstate。 不过,这需要双方都有所控制。

    <html><body> <form id='postForm' action='WebForm.aspx' method='POST'>
            <input type='text' name='postData' value='base-64-encoded-value' />
            <input type='hidden' name='__VIEWSTATE' value='' />  <!-- still need __VIEWSTATE, even empty one -->
        </form>
    
    </body></html>
    

    注意空视图状态。

    <%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="WebForm.aspx.cs" Inherits="WebForm"
     EnableEventValidation="False" EnableViewState="false" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="postForm" runat="server">
            <asp:TextBox ID="postData" runat="server"></asp:TextBox>
        <div>
    
        </div>
        </form>
    </body>
    </html>
    

    注意 EnableEventValidation="False", EnableViewState="false" 防止空视图状态的验证错误。 代码隐藏/继承值不精确。

    WebForm.cs:

    public partial class WebForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string value = Encoding.Unicode.GetString(Convert.FromBase64String(this.postData.Text));
        }
    }
    
        7
  •  0
  •   Vinay Krishna Kudtarkar    11 年前

    把这个标签放进html和

    删除login.aspx设计内容。只需编写页面指令

    受保护的无效页\u加载(对象发送方、事件参数) {

            if (!IsPostBack)
            {
                CompleteRegistration();
            }
        }
    

    public void CompleteRegistration() {

            NameValueCollection nv = Request.Form;
            if (nv.Count != 0)
            {
                string strname = nv["txtbox1"];
                string strPwd = nv["txtbox2"];
            }
        }
    
        8
  •  0
  •   ME119    6 年前

    删除data posting/posted.aspx页的runat=“server”部分。

    推荐文章