获取 DropDownList 值

Getting DropDownList values

我在从 DropDownList 中获取值时遇到问题。我了解如何输入一个值并使用数字获取该值,但我的问题是我必须输入一个值,例如 FrBrb,然后在代码中获取该值并在我的代码中将其设置为值 40。这是我目前所拥有的:

<asp:DropDownList ID="ddlRiverTour" runat="server">
                  <asp:ListItem Value="FrBrd">French Broad</asp:ListItem>
                  <asp:ListItem Value="Nant">Tuck</asp:ListItem>
                  <asp:ListItem Value="Tuck">Nantahala</asp:ListItem>
              </asp:DropDownList>

这是我的 DropDownList,其中包含字母值。我必须使用这些值,但不能使用非常简单的数值。获取这些值然后在我的计算中使用它们的实际代码是令人费解的部分。我不知道我是否应该定义它们然后使用 if 语句来决定哪个是哪个然后进行我的计算但是我如何定义它们或者有更简单的方法吗? 到目前为止,这是我的其余代码:

riverTour = Convert.ToDecimal(ddlRiverTour.SelectedValue);
baseTourFee = rafters * riverTour;

我知道这段代码在这里不起作用,但我确实有一个如下所示的 if 语句:

if (rivertour = FrBrd)
{
  baseTourFee = rafters * 40;
}

但这似乎比需要的代码多了很多,而且工作起来不是很顺利。

如果没有某种方法为 <asp:ListItem> 元素列表中的每个 "words" 赋予特定的数值,您就是在要求编译器完成一项不可能完成的任务。

如果您还没有办法专门给它们赋值,我的建议是使用 enum 例如...

public enum RiverTourEnum
{
  FrBrd = 40,
  Nant = 50,
  Tuck = 60,
}

然后您可以将下拉列表中的值解析为适当的枚举值并以这种方式使用数字...

 string ddVal = ddlRiverTour.SelectedValue;
 RiverTourEnum enumVal = (RiverTourEnum)Enum.Parse(typeof(RiverTourEnum), ddVal);
 int riverTourVal = (int)enumVal;

这显然假设列表中的 "words" 具有静态值。如果不是,那么您需要寻找一种不同的方式来 "lookup" 在特定时间应该使用什么数值


再次阅读问题(及其下的评论)后,如果您真的想使用 if 语句,那么您可能正在寻找这样的东西...

string riverTour = ddlRiverTour.SelectedValue;
if (riverTour == "FrBrd")
{
  baseTourFee = rafters * 40;
}
else if (riverTour == "Nant")
...

或者更好的方法是...

switch(ddlRiverTour.SelectedValue)
{
  case "FrBrd" : 
    baseTourFee = rafters * 40;
    break;
  case "Nant" :
    ...
}