0

クライアントがテキストフィールドに入力を挿入できるasp.netページがあります。

<table>
    <tr>
        <td style="width: 56px"><asp:Label ID="Label1" runat="server" Text="Name"></asp:Label></td>
        <td style="width: 148px"><asp:TextBox ID="name" runat="server" Width="272px"></asp:TextBox></td>
    </tr>

    <tr>
        <td style="width: 56px"><asp:Label ID="Label2" runat="server" Text="Email"></asp:Label></td>
        <td style="width: 148px"><asp:TextBox ID="email" runat="server" Width="272px"></asp:TextBox></td>
    </tr>

    <tr>
        <td style="width: 56px"><asp:Label ID="Label3" runat="server" Text="Subject"></asp:Label></td>
        <td style="width: 148px"><asp:TextBox ID="sub" runat="server" Width="272px"></asp:TextBox></td>
    </tr>

    <tr>
        <td style="width: 56px"><asp:Label ID="Label4" runat="server" Text="Message"></asp:Label></td>
        <td style="width: 148px">
            <asp:TextBox ID="message" runat="server" Width="272px"></asp:TextBox>
            <!--<textarea id="message"; cols="1"; rows="1"; style="width: 272px; height: 152px;"></textarea>-->
        </td>
    </tr>
    <tr></tr>
    <tr>
        <td style="width: 56px; height: 36px;"></td>
        <td style="width: 148px; height: 36px;"><asp:Button ID="Button1" runat="server" Text="Submit" Style="float:left" OnClick="Button1_Click" />
            <asp:Button ID="Button2" runat="server" Text="Reset" />
            <asp:button id="btnTest" runat="server" onclick="btnTest_Click" text="Test Database Connection" />
        </td>
    </tr>
</table>      "

データベースに値を追加しようとするメソッドがあります。

protected void Button1_Click(object sender, EventArgs e)
{
    using (SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    {
        //Check if the same request is already submitted.

        SqlCommand cmd1 = new SqlCommand();
        cmd1.CommandType = System.Data.CommandType.StoredProcedure;
        cmd1.CommandText = "dbo.Procedure";

        cmd1.Parameters.Add("@name", System.Data.SqlDbType.VarChar).Value = name.Text;
        cmd1.Parameters.Add("@email", System.Data.SqlDbType.VarChar).Value = email.Text;
        cmd1.Parameters.Add("@sub", System.Data.SqlDbType.VarChar).Value = sub.Text;
        cmd1.Parameters.Add("@message", System.Data.SqlDbType.VarChar).Value = message.Text;

        cmd1.Connection = conn1;
        conn1.Open();
        cmd1.ExecuteNonQuery();
        conn1.Close();
    }                 
    Response.Redirect("~/Default.aspx");     
}

しかし、「名前'name' /'email' /'sub'/'message'は現在のコンテキストに存在しません」のようなエラーが発生します。私は.netフレームワークとC#の新しい人です。助けてください。

私のスタートページはDefault.aspxで、送信ボタンはContact.aspxページにあります。しかし、デザインモードで[送信]ボタンを押すと、Default.aspx.csの背後にあるコードで作成されたメソッドが表示されます。それは問題でしょうか?

4

1 に答える 1

1

私には、コードビハインドが ID (電子メール、名前...) を持つ TextBoxes を見つけられないように見えます。Web アプリケーション プロジェクトを使用している場合は、.aspx.designer.cs ファイルを調べて、正しく初期化されていることを確認してください。また、部分的なクラス名と名前空間の背後にあるコードは、aspx ページの <%@ Page ... %> ディレクティブの Inherits="xxx" 属性と一致する必要があります。ただし、テーブルがデータバインドまたは動的コントロール内にあるため、この問題が発生する可能性もあります。この場合、コードでコントロール参照を見つける必要があります。

于 2012-06-19T22:29:36.333 に答える