0

単純なasp.netバーコードアプリケーションを使用しています。検証が適切でない場合は、ポップアップメッセージを表示する必要があります。

メッセージが機能するのは、「送信」ボタンを2回押した後だけです。初めてページだけをリロードし、もう一度ボタンを押すとポップアップが表示されます!

編集:私はいくつかの詳細を追加するのを忘れています。私はVS2010を使用しており、コードビハインドとしてC#を使用してWebアプリケーションasp.netを構築しています。

public partial class Barcode : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Validate();

            if (IsValid)
            // 
            {
                string kemet = kemetTextBox.Text;
                string sud = sudTextBox.Text;

                if (kemet.Length == 14 && sud.Length == 28) // SOME VALIDATION CONTROL
                {

                    if (kemet.Substring(1) == sud.Substring(0, 13) && kemet != "" && sud != "")
                    {

                        //resultLabel.Text = "HIGH VOLUME<br/>";
                        redImage.Visible = false;
                        greenImage.Visible = true;

                    }
                    if (kemet.Substring(1) != sud.Substring(0, 13) && kemet != null && sud != null)
                    {

                        //  resultLabel.Text = "LOW VOLUME<br/>" + kemetEd + sudEd;
                        greenImage.Visible = false;
                        redImage.Visible = true;
                    }
                }
                else
                    Button1.Attributes.Add("onClick", "javascript:alert('Message Here');"); // HERE WOULD BE THE ERROR MSG 

IsPostBackをfalseにしようとしましたが、それがさらに悪化しました。

ありがとう!

4

3 に答える 3

3

エラーメッセージが常に同じである場合、1つの方法はCustomValidatorクラスServerValidateイベントを使用することです。

そうでない場合は、次のようなものを使用してください。

Page.ClientScript.RegisterClientScriptBlock(typeof(Page), Guid.NewGuid().ToString(), "alert('my message')", true);
于 2012-08-27T21:40:03.563 に答える
2

これを置き換えてみてください:

Button1.Attributes.Add("onClick", "javascript:alert('Message Here');");

これで:

RegisterDOMReadyScript("alert message", "alert('Message Here');");

次のヘルパーメソッドを使用します。

public void RegisterDOMReadyScript(string key, string script)
{
    string enclosed = EncloseOnDOMReadyEvent(script);
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), key, enclosed, true);
}

private string EncloseOnDOMReadyEvent(string str)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()} r(function(){")
        .Append(str)
        .Append("});");
    return sb.ToString();
}

これにより、ドキュメントの準備ができた後にのみメッセージが表示されるようになり、見苦しいフォーマットの問題を防ぐことができます。

于 2012-08-27T21:51:14.990 に答える
0

エラーメッセージは、まだ発生していないボタンクリックイベントにのみ割り当てるため、ページが読み込まれてボタンが再度クリックされた後にのみ、エラーが表示されます。

これを行うには、ページにスクリプトを登録する必要があります。

ClientScript.RegisterStartupScript(Page.GetType(), "SomeKey", "alert('Message Here');", true);

http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx

于 2012-08-27T21:41:02.843 に答える