0

我正在使用一个简单的 asp.net 条形码应用程序,当某些验证不正确时,我需要显示一条弹出消息。

问题是我的信息只有在我按下“提交”按钮两次后才有效。第一次只是重新加载页面,如果我再次按下按钮,弹出窗口就会出现!

编辑:我只是忘记添加一些细节。我正在使用 VS 2010,使用 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 为假,但这只会让情况变得更糟。

谢谢你!

4

3 回答 3

3

如果您的错误消息始终相同,一种方法是使用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 回答