asp.net mvc dropdownlist获取selectedvalue

时间:2013-09-13 20:04:21

标签: asp.net-mvc drop-down-menu

第一篇文章! 所以我对asp.net mvc 4(3天)很新,我被指派创建一个表来显示一些基准测试结果。我有三个SQL数据表:Benchmark(在脚本和构建ID上都有外键),Build(包含版本的表,来自软件的ID等),脚本(创建日期的一些测试脚本的名称等)< / p>

我创建了模型。使用实体框架的所有表的控制器和视图。

我希望用户从下拉菜单中选择构建版本,然后使用所有脚本,构建版本以及最后一些基准组件(平均时间,通过/失败等)填充表格

我已使用Build.Version中的数据填充了下拉列表。

问题是我不知道如何从DDL中检索所选值

模型类(Benchmark)

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Web.WebPages.Html;

namespace BenchmarkApp.Models
{
   public partial class Benchmark
   {
       public int BenchmarkID { get; set; }
       public int ScriptID { get; set; }
       public int BuildID { get; set; }
       public int MinTime { get; set; }
       public int MeanTime { get; set; }
       public int MaxTime { get; set; }


       [ForeignKey("BuildID")]
       public virtual Build Build { get; set; }

       [ForeignKey("ScriptID")]
       public virtual Script Script { get; set; }
  }
}

Benchmark的控制器类,特别是ActionResult Index()

public class BenchmarkController : Controller
{
    private DAContext db = new DAContext();

    //
    // GET: /Benchmark/

    public ActionResult Index(string buildNumber = "0")
    {
        var benchmarks = db.Benchmarks.Include(b => b.Build).Include(b => b.Script);

        var query = db.Builds.Select(c => new { c.Id, c.Version });
        ViewBag.Builds = new SelectList(query.AsEnumerable(), "Id", "Version");

        return View(benchmarks.ToList());
    }

最后是Benchmark的视图(索引),我已经注释了我尝试过的一些不同的DDL。

<table border="1">
    <tr>
        <th>
            Build version:
        </th>
        <th>
            <%-- Html.DropDownList("Builds", null, new {@onchange = "onChange(this.value);" }) --%>
            <%-- Html.DropDownList("BuildID", (SelectList) ViewBag.Builds, "--Select One--") --%>
            <%: Html.DropDownList("BuildDD", (IEnumerable<SelectListItem>)ViewBag.Builds, "--Select One--")%>
        </th>
    </tr>
</table>

任何帮助将不胜感激!提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

  @var listData = (List<SelectListItem>)ViewBag.Builds;
  @Html.DropDownList("Builds", listData, new
                                {
                                    onchange = "OnChange(this);",
                                    oval = listData.Any(x => x.Selected) ?
                                    listData.Find(x => x.Selected).Value : listData[0].Value
                                })

并在您的javascript中:

function ChangeLanguage_OnChange(dropdownControl) {
    var selectValue = dropdownControl.options[dropdownControl.selectedIndex].value;
}

希望这会对你有帮助!