0

ASP.NET で記述された単純な電子メール フォームがあり、コード ビハインド ファイルにロジックが含まれています。それはすべてC#にあります(ロジックは...)。とにかく、ページの読み込み時に次のものがあります。

protected void Page_Load(object sender, EventArgs e)
{
    RequestorName.Text = Request.Form["UserName"].ToString();
    RequestorTitle.Text = Request.Form["JobTitle"].ToString();
    RequestorEmail.Text = Request.Form["Email"].ToString();
    RequestorPhone.Text = Request.Form["Phone"].ToString();
    RequestorAddress1.Text = Request.Form["Address"].ToString();
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " + Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString();

}

これは、ユーザー情報をいくつかのフィールドにプルするため、すべてを手動で入力する必要がないため、うまく機能します。

コードビハインドの他の2つの方法:

protected void SubmitForm_Click(object sender, EventArgs e)
{
    SendEmail();
}

protected void SendEmail()
{
    try
    {
        //compose email and send

    }
    catch (Exception ex)
    {
        ErrorMessage.Text = "Error: " + ex.ToString();

    }
}

私のフォームページでは、ボタンコードは次のとおりです。

<center>
                <asp:Button runat="server" Text="Submit" ID="Submit" OnClick="SubmitForm_Click" class="button red" />
</center>

メールを生成して送信するフォームの送信ボタンをクリックすると、エラーが発生します。Page_Load コードを削除して問題なく動作しますが、ユーザーがそれほど多くの情報を入力する必要がないように、そこに残しておきたいと思います。

Google Fu を使用して大量のスレッドや記事を読みましたが、解決策が見つからないようです...

ご協力ありがとうございます。

4

3 に答える 3

4

IsPostBack のチェックを追加します。

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack) 
  {
    RequestorName.Text = Request.Form["UserName"].ToString();
    RequestorTitle.Text = Request.Form["JobTitle"].ToString();
    RequestorEmail.Text = Request.Form["Email"].ToString();
    RequestorPhone.Text = Request.Form["Phone"].ToString();
    RequestorAddress1.Text = Request.Form["Address"].ToString();
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " +    Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString();
  }

}
于 2011-10-12T16:20:36.237 に答える
0

if (Page.IsPostBack == false)Page_Load イベントに追加してみましたか?

コードRequest.Formはユーザーが入力したフィールドから来ていると思いますが、マークアップの残りの部分を見ないと、フォームの値を他のフィールドのように見えるものに再割り当てする必要がある理由がわかりませんフォーム。

于 2011-10-12T16:27:02.040 に答える
0

エラーは具体的にどこで発生していますか?あなたのコードから、別のページからメールフォームに投稿し、パラメーターを渡していると想定しています。

その場合は、.Text がページ コントロールであると仮定すると、ページの最初の読み込みだけのために、If(!IsPostback) {...} にコントロール フィラーを含めることを検討する必要があります。次に、電子メール コードをローカル コントロールから読み取ることができます。

私の推測では、「Request.Form[...」アイテムはおそらくポストバック時にエラーを発生させるものです。

HTHデイブ

于 2011-10-12T16:32:45.547 に答える