【问题标题】:Accept multiple optional params in C# method for ASP.NET DropDownList接受 ASP.NET DropDownList 的 C# 方法中的多个可选参数
【发布时间】:2014-01-12 20:30:07
【问题描述】:

我有一个 web 表单,上面有 5 个 asp.net 下拉列表。我想在后面的代码中有一个方法,允许我传入下拉列表的名称并禁用它。我有以下代码有效,但我认为它可以写得更干净,允许我在调用一次方法时禁用多个下拉列表,而不是目前如果我想禁用两个或三个我必须调用该方法三次时间传递下拉列表的不同名称。我希望下面的代码让它更清楚一点:

public partial class _Default : Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        disableDropDown(DropDownList1);
    }


    protected DropDownList disableDropDown(DropDownList a)
    {
        if (a != null)
        {
            a.Enabled = false;
            return a;
        }
        else
        {
            return null;
        }

    }


} 

有类似 disableDropDown(DropDownList1, DropDownList2); 之类的东西会更好吗? 例如,如果我想禁用两个框,而不必使用不同的下拉列表调用相同的方法两次?如果是这样,如何修改我的实际“disableDropDown”函数以允许多个下拉列表?

非常感谢

【问题讨论】:

  • 为什么返回DropDownList
  • 我想你不需要,也许只是为了禁用它们,它接受多个下拉列表

标签: c# asp.net methods code-behind


【解决方案1】:

一种方法,您可以使用params 数组:

public static void EnableControls(bool enable, params WebControl[] controls)
{
    foreach (WebControl c in controls)
    {
        if (c != null) c.Enabled = enable;
    }
}

注意

  • 我返回void(nothing),因为您只是设置了已经可用控件的属性。退回它们是没有意义的
  • 我添加了一个参数enable,它允许启用或禁用控件
  • 我已将其更改为接受WebControls,因为这是具有Enabled 属性的类,这样您就可以将其用于TextBoxLabel 等其他控件,因此您的方法更有用
  • public static 也使其更实用,无论如何您都不需要访问周围的 Page-class 的实例。

您可以使用单个DropDownLists 调用它:

EnableControls(false, dropdown1, dropdown2, dropdown3);

或使用数组(伪代码):

var manyDropDowns = new DropDownList[]{ dropdown1, ..., dropDown999999 };
EnableControls(false, manyDropDowns);

【讨论】:

    【解决方案2】:

    您可以使用params。 (另外,你不需要从这里返回任何东西。)

    protected void DisableDropDown(params DropDownList[] ddls)
    {
        foreach(var ddl in ddls)
        {
            ddl.Enabled = false;
        }
    }
    

    然后像这样使用它:

    DisableDropDown(DropDownList1, DropDownList2, DropDownList3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-27
      • 2016-02-29
      • 2018-01-28
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2013-07-29
      相关资源
      最近更新 更多