0

我创建了一个javascript confirm如下。

<script Type="Text/Javascript">

function CheckListBox(lvi)
{
    if(lvi == "")
    {
        if(confirm("Are you sure?"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

</script>

我需要测试ListBox.Items控件是否为空...我已经在我的 aspx 页面上进行了参考

<script language="javascript" type="text/javascript" src="/JS/confirm.js"></script>

我想知道如何在我的aspx.cs页面上调用它。. . 所以我可以通过parameter

string oi = Listbox_Clubes.Items.Count.ToString();//Its the parameter I want to pass
4

2 回答 2

0

对于您的 javascript,您可以在没有代码隐藏的情况下获取值(假设脚本代码在同一页面中,以便获取客户端 ID):

 <script>
     function ClickListBox() {
         if ($("#<%= Listbox_Clubes.ClientID  %>").val() === null) {
             if (confirm("Are you sure?")) {
                 return true;
             }
             else {
                 return false;
             }
         }
     }
 </script>

同样,您不使用 javascript 在服务器端进行验证。您发布的代码将返回ListBox 中的所有项目。这是获取所选项目数量的一种方法(我正在使用.ToString()基于 OP 代码示例):

string oi = Listbox_Clubes.Items.Cast<ListItem>().Where(i => i.Selected).Count().ToString();

但是,您没有理由获取此值并将其传递回客户端进行验证(这听起来像是您想在帖子中执行的操作)。主要是因为这涉及回发,而客户端验证本质上应该在回发之前进行。此外,即使您进行了客户端验证,您仍然需要进行服务器端验证。

相关:在代码隐藏中,您可以测试以查看是否通过以下方式选择了任何内容:

bool hasValue = Listbox_Clubes.SelectedItem != null;

.SelectedItem返回列表控件中具有最低索引的选定项。当未选择任何内容时,此值为null... 所以您知道如果该值不是null,则至少选择了一项。

如果您想要求他们至少选择一项,您可以使用RequireFieldValidator并让它处理两个验证。如果您没有对 ASP.NET 验证器做太多工作,那将是一件值得阅读的好事情。

听起来您可能应该阅读更多有关客户端验证和服务器端验证以及如何使用它们的信息……因为您似乎将它们混合在一起。

计数代码是ASP:ListBox Get Selected Items - One Liner 中代码的修改版本?

于 2013-01-22T18:48:33.670 回答
0

有关如何从后面的代码执行 javascript,请参阅此链接

protected void Page_Load(object sender, EventArgs e)
{
     ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "CheckListBox(" + Listbox_Clubes.Items.Count.ToString() + ");", false);
}

注意:您必须在 aspx 页面中添加一个 ScriptManager 控件。

于 2013-01-22T19:07:01.907 回答