Asp.net mvc 4 无法将SelectedValue和文本传递给KendoUIDropDownListFor小部件的控制器

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

如果我不使用任何KendoUI功能,并且能够使用常规的Html.dropdownlistforhelper(在代码中被视为注释)轻松地传递它,那么这就很好了。说明和状态ID都没有通过

在下拉列表中选择这些值,然后使用KendoUI扩展名单击enter之后,如何将这些值传递给控制器

如果取消对值和文本属性的注释,则会得到“对象未设置为对象的实例”

@使用(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>