zgi*_*rod 1 .net asp.net-mvc-3
我有一个十进制值,我试图将其包含在下拉列表中,但所选值不起作用。我把代码弄乱了一段时间,但没有运气。最终我使用了完全相同的代码,但将所有内容从十进制更改为 int 并且它有效。
之前(InitialRewardPercent 是一个小数):
@Html.DropDownListFor(x => x.InitialRewardPercent, CommonServices.GetRewardTermInitialPercents(Model.InitialRewardPercent))
CommonServices.GetRewardTermInitialPercents 返回一个选择列表并选择我传入的值:
return new SelectList(rewardTermInitialPercents, "Percent", "PercentDisplay", selectedPercent);
之后(InitialRewardPercent 是一个整数):
@Html.DropDownListFor(x => x.InitialRewardPercent, CommonServices.GetRewardTermInitialPercents(Model.InitialRewardPercent * 100))
我做了 * 100 是因为我想从 0.25 到 25。基本上我所做的就是将变量类型从十进制切换到 int 并且 SelectList 现在正确地将正确的行标记为选定的。
其他任何人都可以让 SelectList 使用十进制值还是我做错了什么?
我有一个类似的问题。
我是decimal.ToString()用来设置SelectListItem.Value所以(4.5m).ToString() == "4.5"
但是模型属性会添加一个额外的零,因为它在数据库中存储为 4.50m 所以 (4.50m).ToString() == "4.50"
在我的情况下的修复是使用格式化的字符串 -decimal.ToString("0.00")所以它与模型属性相同。
public static IList<SelectListItem> ToSelectList(this IEnumerable<decimal> values, string format = "0.00")
{
return values
.Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString(format) })
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |