C# 列表为空时隐藏下拉列表

C# 列表为空时隐藏下拉列表,c#,javascript,asp.net-mvc-3,C#,Javascript,Asp.net Mvc 3,我目前有一个下拉列表,在页面加载时填充,有时下拉列表不包含任何内容,并且是空的。我希望在列表中没有任何项目时隐藏下拉列表。我想我可以通过javascript来实现这一点,但我不确定我会做错什么,因为添加javascript后,它仍然会出现在页面上 下拉选择: <select data-bind="options: endReason() ? endReason().SubReasons : [], value: subReasonId, optionsText: 'Text', optio

我目前有一个下拉列表,在页面加载时填充,有时下拉列表不包含任何内容,并且是空的。我希望在列表中没有任何项目时隐藏下拉列表。我想我可以通过javascript来实现这一点,但我不确定我会做错什么,因为添加javascript后,它仍然会出现在页面上

下拉选择:

<select data-bind="options: endReason() ? endReason().SubReasons : [], value: subReasonId, optionsText: 'Text', optionsValue: 'Value', visible: isChecked"
                            name="subReasons">
                        </select>

这是我的Javascript:

<script type="text/javascript"> 
function OnClientDropDownOpening(sender, eventArgs) 
{   var combo = $find("<%= subReasons %>"); 
    items = combo.get_items(); 
    if(items.get_count()==0) 
    { 
         eventArgs.set_cancel(true); 
    } 
} 
</script> 

函数onClientDropDownOpen(发送方、事件参数)
{var combo=$find(“”);
items=combo.get_items();
if(items.get_count()==0)
{ 
eventArgs.set\u cancel(true);
} 
} 

为什么使用javascript?如果您可以在服务器端使用条件,并且在没有任何元素可渲染的情况下甚至不渲染ddl,则似乎完全浪费了带宽:

@if (Model.Items.Count() > 0)
{
    @Html.DropDownListFor(x => x.SelectedItemId, Model.Items)
}

为什么是javascript?如果您可以在服务器端使用条件,并且在没有任何元素可渲染的情况下甚至不渲染ddl,则似乎完全浪费了带宽:

@if (Model.Items.Count() > 0)
{
    @Html.DropDownListFor(x => x.SelectedItemId, Model.Items)
}

以下要求您包括jQuery库

<script type="text/javascript">
$().ready(function () {
    if ($('select[name=subReasons]').length == 0)
        $('select[name=subReasons]').remove();
});
</script>

$().ready(函数(){
如果($('select[name=subReasons]')。长度==0)
$('select[name=subReasons]')。删除();
});

以下要求包括jQuery库

<script type="text/javascript">
$().ready(function () {
    if ($('select[name=subReasons]').length == 0)
        $('select[name=subReasons]').remove();
});
</script>

$().ready(函数(){
如果($('select[name=subReasons]')。长度==0)
$('select[name=subReasons]')。删除();
});

这应该在纯JavaScript中完成工作:

var select = document.getElementById("select");
var options = select.getElementsByTagName("option");
document.write('Select has ' + options.length + ' options');​

这应该在纯JavaScript中完成:

var select = document.getElementById("select");
var options = select.getElementsByTagName("option");
document.write('Select has ' + options.length + ' options');​

正如我所说,它需要包含jQuery库。此外,是的,它会删除DDL。他已经声明它是在页面加载时填充的,如果它不包含任何元素,他希望它消失。是的,我正在移除DDL。更合适的解决方案是由Darin提供的,但前提是他使用Razor表达自己的观点。否则,他可以在0)中包含他的HTML{%>…html这里也没有提到Razor或者模型可能不是包含用于填充此特定组合框的元素的可枚举的事实。正如我所说的,它需要包含jQuery库。此外,是的,它删除了DDL。他已经声明它在页面加载时填充,如果它不符合要求,他希望它消失n添加任何元素。因此,是的,我正在删除DDL。更合适的解决方案是Darin提供的解决方案,但前提是他使用Razor查看视图。否则,他可以在0中包含HTML){%>…html这里也没有提到Razor,也没有提到模型可能不是包含用于填充此特定组合框的元素的可枚举的事实。如果我错了,请更正我,但是代码似乎在利用KnockoutJS如果我错了,请更正我,但是代码似乎在利用knockoutjsSimple和Grateen。只是一个side注意:如果你不使用Razor,下面的操作基本上是相同的:0){%>…这里的html简单而优雅。只是一个旁注:如果你不使用Razor,下面的操作基本上是相同的:0){%>…这里的html