从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;
}
但这似乎比需要的代码多得多,并且不能很顺利地工作。
答案 0 :(得分:0)
如果没有某种方法可以将<asp:ListItem>
元素列表中的每个“单词”赋予特定的数值,那么就要求编译器执行一项不可能完成的任务。
如果您还没有办法专门给他们提供价值,我的建议是使用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;
这显然假设列表中的“单词”具有静态值。如果没有,那么你需要看一个不同的方式来“查找”在那个特定时间应该使用的数值
再次阅读问题(及其下的评论),如果你真的想使用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" :
...
}