0

第一篇文章!所以我对asp.net mvc 4(3天)非常陌生,我被分配创建一个表格来显示一些基准测试结果。我有三个 SQL 数据表:基准(在脚本和构建 ID 上都有一个外键)、构建(包含软件的版本、ID 等的表)、脚本(一些测试脚本的名称以及创建日期等)

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

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

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

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

模型类(基准)

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());
    }

最后是基准的视图(索引),我已经注释掉了我尝试过的一些不同的 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>

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

4

1 回答 1

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;
}

希望对你有帮助!

于 2013-11-19T10:31:28.240 回答