1

私が達成する必要がある機能は次のとおりです。

ポップアップ/ダイアログボックスを表示:

[はい] をクリックすると、送信された電子メール ID とその他の個人情報を検証する必要があります。検証が失敗した場合は、エラー メッセージを表示して false を返します。メール ID とその他の詳細が正しい場合は、いくつかの Div を非表示/表示します。

私はこの機能をjQueryで実現しましたが、今はサーバー側で行うことになっています。1 つ目は、Div が毎回正しく表示されなかったため、2 つ目はセキュリティ上の懸念によるものでした。

私がグーグルで得た提案は、サーバー側で(スクリプトタグに)完全なコードを書くように求めています。多くのフィールドを検証する必要があるため、それは多すぎます。
また、クライアント側で検証を行い、サーバー側に戻って検証結果に応じて Div を表示する方法はありますか? クライアントスクリプトはサーバー側の前に実行されるため、実現可能です。

このための新しいポップアップ ページを作成したくありません。

誰かが正しいコードまたはコードへのポインターを手伝ってくれたら、divを検証して表示する方法(サーバー側から実行するdivを表示する)。

更新しました:

誰かが私を助けることができれば、私は途中です:

ページの読み込み(ポストバックではない)で、次を追加しました:

btnConfirm.Attributes.Add("onclick", "if(confirm('Confirm - Are you sure you want to go ahead.')) onConfirm(); else return false;");

jQueryコードでは、次のように検証を追加しました:

function onConfirm() {    
    //Check if email-id is not blank, else show message and return to the page
    if (isBlank($('#emailAddress').val()) == false) {
        $('#errorBlankEmail').show();
        return false;
    }
}
    //Text validation functions
    function isBlank(valueSent) {
        if ($.trim(valueSent) == "")
            return false;
        else
            return true;
}

ボタンのコードは次のとおりです。

<asp:Button ID="btnConfirm" runat="server"   Text="Confirm"  onclick="Confirm_Click" />

そして、これのためのサーバー側のコード:

protected void Confirm_Click(object sender, EventArgs e)
    {
        divConfirm.Visible = true;
    }

ボタンをクリックすると、検証して検証が失敗するまで機能し、サーバー側のコードが実行されます。クライアントのクリック コードで結果が false の場合、サーバー側のコードを回避する方法はありますか?

4

4 に答える 4

0

http://www.telerik.com/ ASP.net AJAX コントロール、または Ajax Control Toolkit Modal Extenderを使用してみてください。私は両方を使用しましたが、それらはまさにあなたの後のものです。

于 2012-11-07T13:09:20.513 に答える
0

このようにすることはお勧めしませんが、おそらくこれにより、より良い解決策が得られるでしょう。

あなたが述べたように、サーバー側から静的関数を使用できます

var script = @"<script> $("#somediv").dialog()  </script>", false);
ClientScript.RegisterClientScriptBlock(GetType(), "some", , false);

(#somediv) はユーザー コントロールでカプセル化され、すべての検証ロジックが含まれています。問題は、div のサーバー検証です。div へのポストバック (サーバー側の検証) の後、div は閉じられ、再びサーバーからそれを pup する必要があるため、このアプローチは物事を台無しにします...私は使用します結果を返す新しいポップアップウィンドウ。

于 2012-11-07T13:14:34.777 に答える
0

サーバーで確認を取得しません。サーバーには、リクエスト/レスポンス内でのユーザー操作の概念がありません。リクエストを受信して​​処理し、レスポンスを送信することしかできません。

できることは、ユーザーに確認を求める応答を生成する要求を送信することです。ユーザーは「はい」をクリックすると、別のリクエストが作成されます。サーバーはリクエストを受け取り、リクエストを処理し、レスポンスを送信します。

ただし、サーバーでリクエストを処理しているときに、リクエストを確認するようにユーザーに依頼することはできません。その確認はすでに行われている必要があります。

サーバー上でリクエストを検証できますが、それは単なる標準的な検証です。そこには何の空想もありません。

于 2012-11-07T13:22:21.400 に答える
0

jQuery ui Dialog - Modal Confirmationを使用できます

そして確認時に__doPostbackを使用してイベント「Confirmbutton_Click」を発生させます

それは単なる別の方法ですが、テレリック コントロールほど簡単ではありません..

<script>
    $(function() {
        $( "#dialog-confirm" ).dialog({
            resizable: false,
            height:140,
            modal: true,
            buttons: {
                "Confirm": function() {
                    $( this ).dialog( "close" );
                    __doPostBack('#<%= Confirmbutton.UniqueID %>', null)
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            }
        });
    });
    </script>

そしてhtmlとして、

<div id="dialog-confirm" title="Empty the recycle bin?">
    <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
<asp:button id="Confirmbutton" runat="Server" OnClick="Confirmbutton_Click" style="display:none;" />
于 2012-11-07T13:24:34.437 に答える