【问题标题】:Select random string in drop down list in c#在c#的下拉列表中选择随机字符串
【发布时间】:2013-02-04 13:49:37
【问题描述】:

我想弄清楚如何让我的方法从下拉列表中随机选择一种帐户类型。基本上,在我的 Web 应用程序中,用户将从下拉列表中选择:活动、非活动、潜在客户或暂停。我想做的是测试这个功能,并让我的方法在我运行测试时随机选择一个值。

如果这有意义的话,我很难将方法引用到代码中的字符串值。任何帮助都会很棒,如果您需要更多信息,请告诉我!

这是我目前所拥有的:

   public void RandomStatusTypes()
     {
         List<string> statusTypes = new List<string> { "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" };
         Random randStatus = new Random();
         int index = randStatus.Next(0, 6);
         string value = statusTypes[index];
     }

代码将有一行写着StatusTyp = _Status,,希望我可以为该值分配一个随机状态,这样每次我运行程序时它都会随机选择一个值。

谢谢!

【问题讨论】:

  • 为什么randStatus.Next(...)中有6?不应该是4吗?
  • @CédricBignon - 它必须是 3,而不是 4,总元素是 4,并且列表具有从零开始的索引
  • @CédricBignon,你说得对,是错字,谢谢!
  • 我不确定您要做什么。您可以在后面的代码中使用该下拉列表的id 吗? ( runat="server" ) 你在使用 MVC 和 Razor 吗?请提供更多详细信息。
  • @AppDeveloper 第二个参数是exclusive上限。

标签: c# random names


【解决方案1】:

也许:

private static List<string> StatusTypes = new List<string>(){ "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" };
private static Random randStatus = new Random();

public string RandomStatusTypes()
{
    int index = randStatus.Next(0, StatusTypes.Count);
    return StatusTypes[index];
}

不要在方法本身中创建随机实例。否则,当方法被非常快地调用(例如在循环中)时,您将创建相同的状态。您应该使用一个字段(如上所示)或将随机数作为参数传递给该方法。

我还把列表移到了方法之外,因为当它没有改变时总是创建它是无效的。最后我使用StatusTypes.Count 来确保您始终使用有效范围,即使您将来会更改列表(例如添加新状态)。

【讨论】:

  • Hi Both:只是为了让您知道这里有两个错误。 (1)。 StatusTypes.Count 应该是 method() (2)。列表随时可能超出范围。
  • @Kaf: CountList&lt;T&gt; 的属性(不是方法)。它不能超出范围,因为我已将 Count 属性用于 Random.Next..
  • 啊,好的列表。谢谢 !另外,我刚刚检查了lower bound **inclusive**,但upper bound **exclusive** 这很奇怪。但你是对的。所以我给你一个+1的澄清。 :)
【解决方案2】:

如果您需要 DropdownList 的随机值,则应将 SelectedIndex 属性设置为随机数

   public void RandomStatusTypes()
     {
         List<string> statusTypes = new List<string> { "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" };
         Random randStatus = new Random();
         dropList.Items.AddRange(statusTypes);
         dropList.SelectedIndex = randStatus.Next(0, 3);
     }

【讨论】:

    【解决方案3】:

    如果您只想从 DropdownList 中选择一个值,您应该随机更改 SelectedIndex 属性:

     Random randStatus = new Random();
     public void RandomStatusTypes()
     {
              ddlStatus.SelectedIndex = randStatus.Next(ddlStatus.Items.Count);
     }
    

    这将随机更改为下拉列表中的任何值。请注意,它使用ddlStatus.Items.Count,因此如果您添加或删除项目,则无需修改此代码。

    【讨论】:

      【解决方案4】:

      首先,您需要从该方法返回一个索引( void = 它不返回任何内容)以用作您的selected valueDropDownList

      public int RandomStatusTypes()
       {
           List<string> statusTypes = new List<string> { "ACTIVE", "INACTIVE", "PROSPECT", "SUSPENDED" };
           Random randStatus = new Random();
           return randStatus.Next(0, statusTypes.Count);
       }
      

      之后你可以像这样在某处调用该方法

        var statusForDropDown= RandomStatusTypes(); 
      

      并将statusForDropDown 分配给您的DropDownList

           MyDropDownList.SelectedIndex=statusForDropDown;
      

      【讨论】:

        【解决方案5】:

        试试这个function,其中returns a random item来自过去的myList

        public string RandomListItem(List<string> myList)
        {
            int randNo = new Random().Next(0, myList.Count());
            return myList[randNo];
        }
        

        【讨论】:

        • 在方法中引用这些值时是否必须包含整个名称列表?
        猜你喜欢
        • 1970-01-01
        • 2017-11-19
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 2016-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多