在视图中添加两个下拉框

时间:2013-04-30 10:01:14

标签: asp.net-mvc razor

我有以下代码,我认为通过这样做,我重载了EnteredQuantity已经存在的方法。事情是它几乎只是起作用,我想我在这里比平常更深一点。当我说几乎只是工作时,下拉列表中的文字是0,1,2 ... 1000,如果我从第二个下拉列表中选择“Yard Cut”,那么工作正常,但第一个下拉列表将所有内容添加到十例如

如果我从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" })

2 个答案:

答案 0 :(得分:1)

我认为这是因为您将下拉列表的值添加为文本,因此您有类似这样的内容:

selectList1.val() + selectList2.val()

应该是这样的:

parseFloat(selectList1.val()) + parseFloat(selectList2.val())

答案 1 :(得分:0)

<强>更新

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


我不知道发布表单时发生了什么(可能会将一些代码放在问题中?),但我可以猜测它不是&#34;乘以&#34; 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);