-1
    <div class="row">
                                <label for="email">E-mail Address</label>
                                <div class="col">
                                    <div class="text"><asp:TextBox ID="TextBox2" runat="server" 
                                            onchange="javascript:updateHiddenField();"></asp:TextBox><asp:HiddenField ID="HiddenField1"
                                                runat="server" />
                                    </div>
                                    <span>Find e-mail on <a href="#">My Address Book</a> / <a href="#">Contacts</a></span>
                                    <span>Find e-mail on 
                                        <asp:HyperLink ID="HyperLink1" runat="server">Facebook Profile</asp:HyperLink></span>
                                </div>
                            </div>
                            <div class="row">
                                <label>Invite Type</label>
                                <div class="col">
                                    <div class="inner-row">
                                        <asp:RadioButton  runat="server" ID="r1" Checked="true" GroupName="r" 
                                            />
                                        <label for="id-1"><em>Personalized</em> - Add a personal note to your invitation. This invite type will let your friend know of your identity and will include your personal note</label>
                                    </div>
                                    <div class="inner-row">
                                        <asp:RadioButton  runat="server" ID="r2" GroupName="r"   />
                                        <label for="id-2"><em>Anonymous</em> - Sending an invite anonymously will not reveal your indentity to your friend.</label>
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <label for="message">Personal Note</label>
                                <div class="col">
                                    <div class="textarea">
                                        <div class="textarea-holder">
                                            <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Rows="10" 
                                                Columns="30"  onchange="javascript:updateHiddenField1();"></asp:TextBox><asp:HiddenField
                                                ID="HiddenField2" runat="server" />
                                        </div>
                                    </div>
                                    <span class="text-note">Including a note is optional, but isn’t<br />personalized messages always nice :)</span>
                                </div>
                            </div>
 <asp:LinkButton ID="LinkButton6" runat="server" onClick="LinkButton6_Click" CssClass="btn-send"></asp:LinkButton>

これは私のaspxコードで、最初にテキストボックスから値を転送し、次に隠しフィールドに転送し、次にコードビハインドに転送しようとしています

 <script type="text/javascript">
    function updateHiddenField() {
        document.getElementById('HiddenField1').value = document.getElementById('TextBox2').value;

    }

    function updateHiddenField1() {
        document.getElementById('HiddenField2').value = document.getElementById('TextBox1').value
    }
</script>

私が行うと値が表示されますalert(document.getElementById('HiddenField1').value);

ただし、分離コードには渡されません

 public void LinkButton6_Click(object sender, EventArgs e) { 

 try{
            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
            mail.Subject = "";
            mail.Body = HiddenField1.Value;
            mail.To.Add(HiddenField2.Value);

            ////send the message

            System.Net.Mail.SmtpClient mySmtpClient = new System.Net.Mail.SmtpClient();
            System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("","");
            //mySmtpClient.Port="25";
            mySmtpClient.Host = "";
            mySmtpClient.UseDefaultCredentials = false;
            mySmtpClient.Credentials = myCredential;
            mySmtpClient.Send(mail);
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        } 

ここに画像の説明を入力

編集:

  1. 使ってみましたmail.Body = TextBox2.Text; mail.To.Add(TextBox1.Text);

  2. UpdatePanelなしで試しました

  3. コードは、主な問題である CSS ポップアップにあります

提案されたように、htmlボタンを使用してjavascript関数を呼び出しました

  function btn_click() {
        var email = document.getElementById('HiddenField1').value;
        var body = document.getElementById('HiddenField2').value;

    }

この値を Asp.net の資格情報として渡すにはどうすればよいですか

助けてください

4

4 に答える 4

1
<script type="text/javascript">
 function SendForm() {

        var email = $get("TextBox2").value;
        var message = $get("TextBox1").value;

        PageMethods.SendForm(email, message,
   OnSucceeded, OnFailed);
    }

    function OnSucceeded() {
        // Dispaly "thank you."
        $get("ContactFieldset").innerHTML = "<p>Thank you!</p>";
    }

    function OnFailed(error) {
        // Alert user to the error.
        alert(error.get_message());
    }
</script>

およびAsp.netコードビハインドで使用:

 [WebMethod]
public static void SendForm(string email, string message)
{


    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
        mail.Subject = "";
        mail.From = new MailAddress("");
        mail.Body = message;
        mail.To.Add(email);

        ////send the message

        System.Net.Mail.SmtpClient mySmtpClient = new System.Net.Mail.SmtpClient();
        System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("","");
        //mySmtpClient.Port="25";
        mySmtpClient.Host = "";
        mySmtpClient.UseDefaultCredentials = false;
        mySmtpClient.Credentials = myCredential;
        mySmtpClient.Send(mail);



    if (string.IsNullOrEmpty(email))
    {
        throw new Exception("You must supply an email address.");
    }

    if (string.IsNullOrEmpty(message))
    {
        throw new Exception("Please provide a message to send.");
    }

    // If we get this far we know that they entered enough data, so
    // here is where you would send the email or whatever you wanted
    // to do :)
}

これはあなたにとって良いはずです:)

于 2012-04-05T14:24:30.763 に答える
0

メールアドレスをTextBox2に入力し、それをHiddenField1にコピーしますが、コードビハインドのアドレスのHiddenField2を読み取ります。同様に、メール本文をTextBox1に入力し、それをHiddenField2にコピーしますが、コードビハインドでHiddenField1を読み取ります(クライアントでの1と2の交換は不必要に混乱します)。非表示フィールドの値をテストするとき、両方のテキストボックスにデータを入力していますか?

于 2012-04-05T12:58:24.863 に答える
0

まず第一に、隠しフィールドとそれに関連するもの (javascript 関数) を削除する必要があると思います。解決策ではなく、問題の原因に注目してください。問題は、テキスト ボックスの値がサーバーに戻されないことです。最終的に隠しフィールドで動作するようになったとき、問題はまだ存在する可能性があります。非表示フィールドには元のテキストボックスと同じ問題があることはすでにわかっていますが。

問題の切り分け:

1) 値は実際にサーバーに送信されますか? (これは、開発者ツールのブラウザー ビルドまたは HttpWatch などのプラグインで確認できます。最悪の場合、スニファーを使用できます)

2) ajax/updatepanel 機能をオフにして、updatepanel が干渉していないことを確認します。(これを行うには、通常はマスターページにある ScriptManager で EnablePartialRendering を false に設定します)。これは問題ではありませんが。

3) 正しい値が実際にサーバーにポストされていることを確認したら、Page_Load (または同様の関数) に、OnLoad の直前に処理されるポストバック値を上書きする奇妙なロジックがないことを確認してください。これは、ポストバックでない場合にのみ実行される初期化である可能性があります。

4) ポストバック変数が処理されるときにコントロールが存在することを確認してください。存在しない場合、ポストバック値は無視されます。コードが「CSS ポップアップ」にあることに気付きました。ポストバック変数が処理されるときに、このポップアップが (コントロール コレクションに) 存在することを確認してください。

于 2012-04-05T13:34:12.953 に答える
0

コードビハインドで TextBox から直接値を読みたくないですか?

mail.Body = TextBox1.Text;
于 2012-04-05T12:26:13.357 に答える