Asp.net mvc 当绑定到IEnumerable并使用ASP.NET MVC时,如何设置KendoUI下拉列表的默认值
我有这个模型(包含Asp.net mvc 当绑定到IEnumerable并使用ASP.NET MVC时,如何设置KendoUI下拉列表的默认值,asp.net-mvc,kendo-ui,kendo-dropdown,dropdownlistfor,Asp.net Mvc,Kendo Ui,Kendo Dropdown,Dropdownlistfor,我有这个模型(包含IEnumerableofints),我想为这个IEnumerable中的每个元素创建KendoUIDropDownList: public class PlayersInGameViewModel { public PlayersInGameViewModel() { this.FirstTeamPlayers = Enumerable.Range(1, 8).Select(x => 0).ToList(); } pub
IEnumerable
ofint
s),我想为这个IEnumerable
中的每个元素创建KendoUIDropDownList
:
public class PlayersInGameViewModel
{
public PlayersInGameViewModel()
{
this.FirstTeamPlayers = Enumerable.Range(1, 8).Select(x => 0).ToList();
}
public IList<int> FirstTeamPlayers { get; set; }
}
这是我在视图中创建DropDownList
s的部分:
@for (var i = 0; i < 8; i++)
{
@(Html.Kendo().DropDownListFor(x => x.FirstTeamPlayers[i])
.DataTextField("Name")
.DataValueField("Value")
.Filter("contains")
.MinLength(1)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("PlayersRead", "PlayersInGames");
})
.ServerFiltering(false);
})
)
<br />
}
以下是HTML格式的结果:
<input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="FirstTeamPlayers_2_" name="FirstTeamPlayers[2]" type="text" value="3" />
<script>
jQuery(function(){jQuery("#FirstTeamPlayers_2_").kendoDropDownList({"dataSource":{"transport":{"read":{"url":"/Administration/PlayersInGames/PlayersRead"},"prefix":""},"schema":{"errors":"Errors"}},"dataTextField":"Name","filter":"contains","minLength":1,"valuePrimitive":true,"dataValueField":"Value"});});
</script>
jQuery(function(){jQuery(“#FirstTeamPlayers_2”).kendoDropDownList({“dataSource”:{“transport”:{“read”:{“url”:“/Administration/PlayersInGames/PlayersRead”},“prefix”:“},“schema”:{“errors”:“errors”},“dataTextField”:“Name”,“filter”:“contains”,“minLength”:1,“valuePrimitive”:true,“dataValueField”:“Value”});
正如您所见,所有内容似乎都正确生成,HTML中存在value=“3”
,但浏览器中的小部件显示了所有下拉列表的默认值:
控制台上没有JavaScript错误
我错过了什么为什么KendoUI不尊重给定值?
编辑:
此外,所有值都已正确加载:
目前我正在使用一种解决方法:通过
助手中的SelectedIndex(Model.firstTeamPlayer[I])
方法设置值
以下是我的工作观点:
@for (var i = 0; i < 8; i++)
{
@(Html.Kendo().DropDownListFor(x => x.FirstTeamPlayers[i])
.DataTextField("Name")
.DataValueField("Value")
.Filter("contains")
.SelectedIndex(Model.FirstTeamPlayers[i])
.MinLength(1)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("PlayersRead", "PlayersInGames");
})
.ServerFiltering(false);
})
)
}
(变量i=0;i<8;i++)
{
@(Html.Kendo().DropDownListFor(x=>x.firstTeamPlayer[i])
.DataTextField(“名称”)
.DataValueField(“值”)
.过滤器(“包含”)
.SelectedIndex(Model.FirstTeamPlayer[i])
.MinLength(1)
.DataSource(source=>
{
source.Read(Read=>
{
阅读。动作(“玩家阅读”、“玩家阅读”);
})
.ServerFiltering(false);
})
)
}
<input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="FirstTeamPlayers_2_" name="FirstTeamPlayers[2]" type="text" value="3" />
<script>
jQuery(function(){jQuery("#FirstTeamPlayers_2_").kendoDropDownList({"dataSource":{"transport":{"read":{"url":"/Administration/PlayersInGames/PlayersRead"},"prefix":""},"schema":{"errors":"Errors"}},"dataTextField":"Name","filter":"contains","minLength":1,"valuePrimitive":true,"dataValueField":"Value"});});
</script>
@for (var i = 0; i < 8; i++)
{
@(Html.Kendo().DropDownListFor(x => x.FirstTeamPlayers[i])
.DataTextField("Name")
.DataValueField("Value")
.Filter("contains")
.SelectedIndex(Model.FirstTeamPlayers[i])
.MinLength(1)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("PlayersRead", "PlayersInGames");
})
.ServerFiltering(false);
})
)
}