从代码隐藏调用警报

时间:2010-07-26 18:52:48

标签: asp.net jquery

我有一个下拉列表和一个列表框两个asp.net控件

我试图阻止用户将重复项添加到列表框控件

我能阻止它,但我想显示DIV或警告框说“不允许重复名称”

protected void btn_AddRecipientAction_OnClick(object sender, EventArgs e)
        {
            if (Convert.ToInt32(this.ddlRecipient.SelectedValue) > 0)
            {
                if (ddlRecipient.Text.Length > 0)
                {
                    //var items = new System.Collections.ArrayList(this.lstRecipient.Items);  
                    for(var i = lstRecipient.Items.Count - 1; i >= 0; --i) 
                    {                      
                        if (lstRecipient.Items[i].Text == ddlRecipient.SelectedItem.Text)
                        {
                            lstRecipient.Items.RemoveAt(i);
                            **//alert("duplicate entry not allowed")
                            //div display the message and disappears after few seconds?**
                        } 
                    } 
                    ListItem newList = new ListItem();
                    newList.Text = ddlRecipient.SelectedItem.Text;
                    newList.Value = ddlRecipient.SelectedValue;
                    this.lstRecipient.Items.Add(newList);
                }


            } 
        }

4 个答案:

答案 0 :(得分:2)

你想要的实际上是两件事。

您应该在后面的代码中验证,检查帖子上的重复项。然后,使用一些javascript在客户端上进行相同的检查。

您必须检查服务器上的重复项,因为用户可能没有打开javascript。

答案 1 :(得分:2)

提醒方式:

假设您有一个ScriptManager

,您可以使用此行
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),"alert","alert('duplicate entry not allowed');",true);

然而,这仍然会进行回发,因为在单击后再次加载页面时会运行脚本。更好的解决方案是在提交页面之前使用javascript在客户端验证。

答案 2 :(得分:2)

哇!请不要在页面中注入js来提醒用户。您应该使用通知控件来接收类似于数组的消息数据集,然后将消息显示给用户。你想分开你的顾虑。

你可以用js来实现。在服务器上,您可以在json中的隐藏字段中设置数组,然后在js中的文档就绪事件中读取该json数据,解析它并在数组上循环并显示消息。如果你必须你可以使用警报显示它们,但你应该避免它,因为它是1990年代。

但我会超越它。我在javascript进入服务器之前进行了所有的处理和验证。因此,您不必依赖帖子来执行验证。因此,一旦用户添加该项目,就会被告知它是重复的。然后,一旦用户填写了列表,他就可以使用ajax调用保存或发布页面,并在服务器上解析列表,验证并保存。如果您必须将列表与已在服务器上保留的列表进行比较,则可以在那里执行此操作。什么事情出错了?您将消息添加到通知控件。

请考虑一下。尝试使用像MVC这样的框架来区分您的关注点。我使开孔更快,更易于维护。

答案 3 :(得分:0)

要从后面的代码中调用一些JS,可以使用Page.ClientScript属性并调用RegisterStartupScript()方法

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