【问题标题】:C# ASPX - Form Submission QueryC# ASPX - 表单提交查询
【发布时间】:2011-12-19 05:51:44
【问题描述】:

我有一个 C# aspx 表单,我需要将它的数据输入到 SQL 数据库中,然后返回一个响应,说明成功与否。我不知道如何获取从 Default.aspx 页面发送的表单数据。我的基本代码结构如下:

Default.aspx

<form runat="server" name="aForm" action="Results.aspx" method="post" onsubmit="ValidateForm()">  
  <input name="firstname" type="text" />
  <input name="surname" type="text" />
  <input type="submit" value="Submit" />
</form>

Results.aspx.cs

public partial class AwardsForm : System.Web.UI.Page {

  protected void Page_Load(object sender, EventArgs e) {

    if (!this.IsPostBack){
        Response.Redirect("Default.aspx");
    } else (this.IsPostBack) {
        writeResults(FormSubmit()); 
    }

    protected boolean FormSubmit() {
      // get form data and insert it into SQL
      // return true/false based on success
    }

    protected void writeResults(boolean results) {
      if (results == true) {
        Response.Write ("Success");
      } else {
        Response.Write ("Failed");
      }
    }

}

【问题讨论】:

    标签: c# asp.net forms


    【解决方案1】:

    您可以通过Request.Form["key"] 获取已发布的表单数据,或者,如果您的表单元素使用runat="server" 进行装饰,那么您应该能够在您的代码中通过 id 获取它们

    <asp:TextBox id="yourTb" runat="server"></asp:TextBox>
    
    string postedText = yourTb.Text;
    

    或者你可以这样做(虽然这不太常见)

    <input type="text" runat="server" id="yourOtherTb" />
    
    string otherPostedText = yourOtherTb.Value;
    

    或者,如果您正在使用纯 html 表单输入:

    <input type="text" id="clientTb" name="clientTb" />
    
    string clientText = Request.Form["clientTb"];
    

    【讨论】:

    • 非常感谢伙计,我觉得很好。关于这个机器密钥业务的任何想法?这是本地表格,不会在线使用。我试图不执行此处采取的步骤:sharemypoint.wordpress.com/2009/04/15/machinekey-in-webconfig.
    • 不确定机器密钥的事情@Bonjour - 抱歉
    • 没问题,我使用页面上的 hack 让它工作。感谢您的回答伙伴,非常感谢。
    【解决方案2】:

    你可以通过下面的代码试试。

    string firstname = Request.Form["firstname"]
    
    string surname = Request.Form["surname"]
    

    【讨论】:

    • 谢谢你,这个答案很好。如果您对我对上述亚当的回答有任何意见,那将非常感谢。
    【解决方案3】:

    既然你正在做这样的事情

     <input name="firstname" type="text" />
      <input name="surname" type="text" />
      <input type="submit" value="Submit" />
    

    输入控件的name 属性被回发到服务器(IIS)。因此你会这样做。

    If(IsPostBack)
    {
      string firstName = Request.Form["firstname"];
      string surName = Request.Form["surname"];
    
    if(string.IsNullOrEmpty(firstName))
    {
    Response.Write("Firstname is required this form");
    }
    }
    

    【讨论】:

    • 谢谢你,这个答案很好。如果您对我对上述亚当的回答有任何意见,那将非常感谢。
    • @Bonjour msdn.microsoft.com/en-us/library/w8h3skw9.aspx 机器密钥用于在发布到同一域中的其他应用程序时对表单数据进行加密和解密。您的要求不需要,请务必从 web.config 中删除 &lt;machinekey&gt; 部分
    猜你喜欢
    • 2011-05-25
    • 2014-06-21
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多