Asp.net mvc 4 无法将SelectedValue和文本传递给KendoUIDropDownListFor小部件的控制器
如果我不使用任何KendoUI功能,并且能够使用常规的Html.dropdownlistforhelper(在代码中被视为注释)轻松地传递它,那么这就很好了。说明和状态ID都没有通过 在下拉列表中选择这些值,然后使用KendoUI扩展名单击enter之后,如何将这些值传递给控制器 如果取消对值和文本属性的注释,则会得到“对象未设置为对象的实例”Asp.net mvc 4 无法将SelectedValue和文本传递给KendoUIDropDownListFor小部件的控制器,asp.net-mvc-4,kendo-ui,telerik-mvc,Asp.net Mvc 4,Kendo Ui,Telerik Mvc,如果我不使用任何KendoUI功能,并且能够使用常规的Html.dropdownlistforhelper(在代码中被视为注释)轻松地传递它,那么这就很好了。说明和状态ID都没有通过 在下拉列表中选择这些值,然后使用KendoUI扩展名单击enter之后,如何将这些值传递给控制器 如果取消对值和文本属性的注释,则会得到“对象未设置为对象的实例” @使用(Html.BeginForm(“AddSingleStatus”,“Status”,new-AjaxOptions{HttpMethod=“PO
@使用(Html.BeginForm(“AddSingleStatus”,“Status”,new-AjaxOptions{HttpMethod=“POST”,}))
{
@Html.ValidationSummary(true)
@LabelFor(model=>model.Description);
@Html.HiddenFor(model=>model.Description)
@(Html.Kendo().DropDownListFor(model=>model.StatusID)
.Name(“statusDropDownList”)
.DataTextField(“说明”)
.DataValueField(“状态ID”)
.DataSource(source=>
{
source.Read(Read=>
{
read.Action(“ReadDDL”、“Status”);
})
.ServerFiltering(false);
})
.OptionLabel(“选择状态”)
.已选择索引(0)
.事件(e=>e
.Change(“dropdownlist_Change”)
)
)
@*@Html.DropDownListFor(model=>model.StatusID,新选择列表((YeagerTechModel.Status[])视图数据[“Status”],“StatusID”,“Description”)*@
@*@Html.ValidationMessageFor(model=>model.StatusID)*@
}
函数dropdownlist_change()
{
var dropdownlist=$(“#Status dropdownlist”).数据(“kendoDropDownList”);
dropdownlist.bind(“更改”,函数(e)
{
var value=dropdownlist.value();
});
}
我没有使用MVC剑道功能,只使用了Web版本,但我非常确定普通的MVC DropDownListFor会分配字段名称,以便正确绑定。在剑道中,您手动分配名称(statusDropDownList)。你不能删除这一行并让剑道命名,这样绑定就会自动处理吗?我添加了一个更改事件,在获得对下拉列表的引用后,js函数中正确选择了所选的值。但是,发布时如何将此选定值放置在模型中?如果我使用常规的DropDownListFor(不是Kendo),整个过程都可以正常工作。当我尝试和发布时,当我查看状态模型(stat变量)时,控制器中的StatusID和描述都为null,如下所示:public ActionResult AddSingleStatus(Status Status Status)尝试删除此行:。Name(“statusDropDownList”)如果我删除该名称,如何在dropdownlist_change函数中获取对它的引用?
@using (Html.BeginForm("AddSingleStatus", "Status", new AjaxOptions { HttpMethod = "POST", }))
{
@Html.ValidationSummary(true)
<table>
<tr>
<td>
<div class="display-label">
@Html.LabelFor(model => Model.Description);
</div>
<div class="display-label" style="display: none;">
@Html.HiddenFor(model => Model.Description)
</div>
<div class="editor-field">
@(Html.Kendo().DropDownListFor(model => Model.StatusID)
.Name("statusDropDownList")
.DataTextField("Description")
.DataValueField("StatusID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("ReadDDL", "Status");
})
.ServerFiltering(false);
})
.OptionLabel("Select a status")
.SelectedIndex(0)
.Events(e => e
.Change("dropdownlist_change")
)
)
@* @Html.DropDownListFor(model => Model.StatusID, new SelectList((YeagerTechModel.Status[])ViewData["statuses"], "StatusID", "Description"));*@
@*@Html.ValidationMessageFor(model => Model.StatusID)*@
</div>
</td>
</tr>
<tr>
<td>
<input type="submit" id="ddlSubmit" value='@Resources.Add' />
</td>
</tr>
</table>
}
<script type="text/javascript">
function dropdownlist_change()
{
var dropdownlist = $("#statusDropDownList").data("kendoDropDownList");
dropdownlist.bind("change", function (e)
{
var value = dropdownlist.value();
});
}
</script>