【发布时间】:2014-10-05 17:38:03
【问题描述】:
我有一个剑道下拉列表:
@(Html.Kendo().DropDownList()
.Name("concessions")
.HtmlAttributes(new { style = "width:320px" })
.DataTextField("Description")
.DataValueField("Id")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getConcessionsDDL", "MasterData");
});
})
)
从控制器中的getConcessionsDDL方法读取数据源:
public ActionResult GetConcessionsDDL()
{
ConcessionModel cm = new ConcessionModel();
var aux = cm.getConcessions();
return Json(aux.concessions.Select(sme => new ConcessionModel { Description = sme.concession.mediumDescription, Id = sme.concession.id }).Distinct(), JsonRequestBehavior.AllowGet);
}
它工作正常,DropDownList 按预期填充。但现在我想定义它的默认选择值。现在,默认值始终是列表的第一个。
我使用了.SelectedIndex(4),它可以工作:在这种情况下,选定的索引将为 4。但我想在控制器中定义它。
我尝试在ViewBag 中传递选定的索引,但没有成功:
ViewBag.selectedIndex = 21;
在视图中:
@(Html.Kendo().DropDownList()
.Name("concessions")
.HtmlAttributes(new { style = "width:320px" })
.DataTextField("Description")
.DataValueField("Id")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getConcessionsDDL", "MasterData");
});
})
.SelectedIndex(ViewBag.selectedIndex)
)
到目前为止没有运气。有什么帮助吗?
【问题讨论】:
-
不应该是 .SelectedIndex(ViewBag.selectedIndex) 吗?查看包。 selectedIndex 不是 ViewBag.SelectedIndex
-
注意到了,但
ViewBag值不区分大小写,所以ViewBag.selectedIndex=ViewBag.SelectedIndex -
为什么不把剑道下拉列表重命名为你的视图模型中的东西(例如你的'Id'属性)?这样selectedindex会自动设置,而不是通过viewbag传入。
-
@kryptonkal,你的意思是
.Name("Id")?我看不出这将如何将 id 值绑定到 Road 模型,因为有很多 id。getConcessionsDDL方法带来了数据库的所有让步,不受任何其他模型的约束。 -
您正在让用户选择一个特许权,那么为什么不在您的视图模型中拥有一个 ConcessionId 属性。只需将其用作控件名称并在页面加载时分配属性即可。
标签: asp.net-mvc razor kendo-ui