我正在使用一个简单的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设为false,但这只是让它变得更糟。
谢谢你!答案 0 :(得分:3)
如果您的错误消息始终相同,则可以使用CustomValidator Class ServerValidate事件。
如果没有,请使用以下内容:
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), Guid.NewGuid().ToString(), "alert('my message')", true);
答案 1 :(得分: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();
}
这将确保您的邮件仅在document is ready之后显示,从而防止出现难看的格式问题。
答案 2 :(得分:0)
您只将错误消息分配给尚未发生的按钮单击事件,因此只有在加载页面并再次单击该按钮后才会看到错误。
为此,您需要在页面中注册脚本:
ClientScript.RegisterStartupScript(Page.GetType(), "SomeKey", "alert('Message Here');", true);