0

我有以下代码,我认为这样做我正在重载一个已经存在于 EnteredQuantity 的方法。问题是它几乎可以正常工作,我想我在这里比平时更深一点。当我说几乎可以工作时,下拉列表中的文本是 0,1,2 ... 1000,如果我从第二个下拉列表中选择“庭院切割”,那效果很好,但第一个下拉列表会添加十倍的所有内容例如。

如果我从 selectList1 中选择“1”,然后从 selectList2 中选择“1/2 Yard Cut”,我得到的值为 10.5,而不是 1.5,依此类推。

现在我认为我不应该试图让它以这种方式工作,但代码不是我的,我只是想让它工作以满足我的需要。我认为理想情况下,将 selectList1 + selectList2 的值从该视图中的注释掉的代码添加在一起并且该值在更新之前成为 EnteredQuantity 会很好,如果您知道我的意思。

我怎样才能做到这一点?

代码:

@Html.LabelFor(model => model.EnteredQuantity, new { @class = "qty-label" })<text>:</text> 

var maxQty = 1000;
var selectList1 = new List<SelectListItem>(maxQty + 1);
for (var i = 0; i <= maxQty; i++)
{
    selectList1.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
}
@Html.DropDownListFor(model => model.EnteredQuantity, selectList1, new { @class = "qty-input" })

<text> + </text> 
var selectList2 = new SelectList(new []
{
    new {ID="0",Name="0 Yard Cut"},
    new {ID="0.25",Name="1/4 Yard Cut"},
    new {ID="0.50",Name="1/2 Yard Cut"},
    new {ID="0.75",Name="3/4 Yard Cut"},
}, "ID","Name",0);
ViewData["selectList2"]=selectList2;

//@Html.DropDownList("list",ViewData["selectList2"] as SelectList);

@Html.DropDownListFor(model => model.EnteredQuantity, selectList2, new { @class = "qty-input1" })
4

2 回答 2

1

我认为这是因为您将下拉列表的值添加为文本,所以您有以下内容:

selectList1.val() + selectList2.val()

什么时候应该是这样的:

parseFloat(selectList1.val()) + parseFloat(selectList2.val())
于 2013-04-30T10:30:43.823 回答
0

更新:

忽略这一点,看看您是否可以使用下面的@von 答案来解决它,这要好得多并且可以解决相同的问题。


我不知道发布表单时会发生什么(也许将一些代码放在问题中?),但我可以猜到它不是“乘以”10,而只是将字符串连接1为第一个下拉和0.50第二个。

尝试更改删除零的第二个选择列表,看看会发生什么:

var selectList2 = new SelectList(new []
{
  new {ID=".0",Name="0 Yard Cut"},
  new {ID=".25",Name="1/4 Yard Cut"},
  new {ID=".50",Name="1/2 Yard Cut"},
  new {ID=".75",Name="3/4 Yard Cut"},
}, "ID","Name",0);
于 2013-04-30T10:32:46.933 回答