0

初めて ASP.NET コードを書いているときに、奇妙なバグに遭遇しました。投稿するボタンをクリックすると、投稿されますが、パラメーターはありません。

コード:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="SingTelAPI.Login" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <table style="width:100%;">
        <tr>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td>
                &nbsp;</td>
            <td>
                <table style="width:100%;">
                    <tr>
                        <td>
                            &nbsp;</td>
                        <td align="center">
                            <asp:Label ID="Label4" runat="server" Text="Login" Font-Bold="True" 
                                Font-Names="Verdana" ForeColor="#CC0000" Font-Size="Large"></asp:Label>
                        </td>
                        <td>
                            &nbsp;</td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;</td>
                        <td>
                            &nbsp;</td>
                        <td>
                            &nbsp;</td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;</td>
                        <td>
                            <asp:Panel runat="server" DefaultButton="SubmitBtn" ID="Panel1">
                                <table style="width:100%;">
                                    <tr>
                                        <td class="style1">
                                            <asp:Label ID="Label9" runat="server" Font-Bold="True" Font-Names="Verdana" 
                                            ForeColor="#0066FF" Text="Inupt Details:"></asp:Label>
                                        </td>
                                        <td>
                                        &nbsp;</td>
                                        <td>
                                        &nbsp;</td>
                                    </tr>
                                    <tr>
                                        <td class="style1">
                                            <asp:Label ID="Label5" runat="server" Text="Email:"></asp:Label>
                                        </td>
                                        <td>
                                            <telerik:RadTextBox ID="Email" runat="server" Skin="Default">
                                            </telerik:RadTextBox>
                                        </td>
                                        <td>
                                            <asp:CustomValidator ID="EmailValidator" runat="server" 
                                            ErrorMessage="Please Enter Email" Font-Bold="True" Font-Names="Verdana" 
                                            ForeColor="#00CC66" ControlToValidate="Email" ValidateEmptyText="True" 
                                            ValidationGroup="LoginValidation"></asp:CustomValidator>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="style1">
                                            <asp:Label ID="Label6" runat="server" Text="Password:"></asp:Label>
                                        </td>
                                        <td>
                                            <telerik:RadTextBox ID="Password" Runat="server" Skin="Default">
                                            </telerik:RadTextBox>
                                        </td>
                                        <td>
                                            <asp:CustomValidator ID="PasswordValidator" runat="server" 
                                                ControlToValidate="Password" ErrorMessage="Please Enter Password" Font-Bold="True" 
                                                Font-Names="Verdana" ForeColor="#00CC66" ValidateEmptyText="True" 
                                                ValidationGroup="LoginValidation"></asp:CustomValidator>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="style1" colspan="3">
                                           <hr /></td>
                                    </tr>
                                    <tr>
                                        <td class="style1">
                                            <telerik:RadButton ID="SubmitBtn" runat="server" 
                                                Skin="Default" Text="Login" ValidationGroup="LoginValidation" 
                                                Width="120px">
                                            </telerik:RadButton>
                                        </td>
                                        <td>
                                            <asp:Label ID="ResultsLabel" runat="server" ForeColor="#339933"></asp:Label>
                                        </td>
                                        <td>
                                            &nbsp;</td>
                                    </tr>
                                </table>
                            </asp:Panel>
                        </td>
                        <td>
                            &nbsp;</td>
                    </tr>
                </table>
            </td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
        </tr>
    </table>
</asp:Content>

そして .cs ファイル:

public partial class Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            string email = HttpContext.Current.Request["Email"];
            Label9.Text = email;
        }
    }
}

何らかの理由で、Label9 のテキストが "" に変更されます。最初に問題は、telerik がインストールされていないことにあると思ったので、インストールしました。しかし、それは何も変わりませんでした。

4

3 に答える 3

1

Email実際にはそうではないと思うので、実際にページに投稿されているすべてのフィールドをチェックしますEmail

asp.netでは、特にマスターページとコンテンツページでは、入力のIDと名前が動的に変更されます。

したがって、Eメールはctl00_ContentPlaceHolder1_Emailたとえば次のようなものになる可能性があります。

Requestこれを言うと、.netページにポストバックされたフィールドにアクセスするためにオブジェクトを使用する必要はありません。値に直接アクセスできます。

例えば

Label9.Text = this.Email.Text;
于 2012-04-17T08:34:39.780 に答える
1

コントロールのIDは、クライアントに送信されるときに変更されるため、PostBackではHttpContextIDのフィールドがない可能性があります"Email"

これを試して:

if (IsPostBack)
{
 string email = Email.Text; //Email refers to <telerik:RadTextBox ID="Email"/>
 Label9.Text = email;
}
于 2012-04-17T08:34:44.987 に答える
1

ボタンのイベント ハンドラーをアタッチしていないようです。次のように変更します。

<telerik:RadButton ID="SubmitBtn" runat="server"  Skin="Default" 
    OnClick="RadButton1_Click" Text="Login" ValidationGroup="LoginValidation"  Width="120px">
</telerik:RadButton>

コードビハインドで処理します。

protected void RadButton1_Click(Object sender, EventArgs e)
{
    String email = Email.Text;
}

Page_Load の部分は冗長なので削除します。

于 2012-04-17T08:39:23.463 に答える