第一篇文章! 所以我对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>
任何帮助将不胜感激!提前谢谢!
答案 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;
}
希望这会对你有帮助!