Asp.net mvc 4 发布后kendodropdownlist未将值绑定到模型

Asp.net mvc 4 发布后kendodropdownlist未将值绑定到模型,asp.net-mvc-4,kendo-ui,kendo-asp.net-mvc,kendo-dropdown,Asp.net Mvc 4,Kendo Ui,Kendo Asp.net Mvc,Kendo Dropdown,我正在为我的项目使用剑道UI。我有一个用json填充的剑道下拉列表。我在我的dropdownlist中得到了值,但在post上,模型没有得到dropdownlist的选定值。我已经坚持了一天,没有结果。我不知道我要去哪里。请检查代码 视图: @model IEnumerable @foreach(模型中的var项目) { @(Html.Kendo().DropDownListFor(modelItem=>item.Level2) .名称(“二级”) .HtmlAttributes(新的{styl

我正在为我的项目使用剑道UI。我有一个用json填充的剑道下拉列表。我在我的dropdownlist中得到了值,但在post上,模型没有得到dropdownlist的选定值。我已经坚持了一天,没有结果。我不知道我要去哪里。请检查代码

视图:

@model IEnumerable
@foreach(模型中的var项目)
{
@(Html.Kendo().DropDownListFor(modelItem=>item.Level2)
.名称(“二级”)
.HtmlAttributes(新的{style=“width:10%”)
.OptionLabel(“选择级别2…”)
.DataTextField(“文本”)
.DataValueField(“值”)
.BindTo((System.Collections.IEnumerable)ViewBag.Level2)
)
}
@(Html.Kendo().Grid(模型)
.Name(“现金例外GridTest”)
.列(列=>
{
列.绑定(p=>p.Category).Title(“Category”).Width(130);
columns.Bound(p=>p.EnterText1).Title(“Comments”).Width(130);
列。绑定(p=>p.Dateoftransaction)。标题(“日期”)。宽度(130);
columns.Bound(p=>p.InternalLocalAmount).Title(“InternalAmt”).Width(130);
columns.Bound(p=>p.ExternalLocalAmount).Title(“ExternalAmt”).Width(130);
})
.ToolBar(ToolBar=>
{
//工具栏。模板(“”);
toolbar.Create();//使用“Create”命令添加新的数据项。
toolbar.Save();//Save命令保存更改的数据项。
})
.Editable(Editable=>Editable.Mode(GridEditMode.InCell))//在单元格编辑模式中使用。
.HtmlAttributes(新的{style=“height:550px;”})
.HtmlAttributes(新的{style=“height:350px;”})
.Pageable(Pageable=>Pageable
.输入(真)
.数字(假)
)
.Reorderable(r=>r.Columns(true))
.Sortable()
.column菜单()
.可滚动(scr=>scr.高度(430))
.可过滤()
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(20)
.ServerOperation(错误)
.Batch(true)//启用批更新。
.Model(Model=>
{
model.Id(p=>p.RowID);//指定作为模型唯一标识符的属性。
model.Field(p=>p.RowID).Editable(false);//使ProductID属性不可编辑。
})
.Update(“编辑更新”、“多任务”)
.Create(“编辑”、“创建”、“多任务”)
)
)
}
我有一个剑道网格,下面我不包括代码简洁

控制器:

  public ActionResult GetLevel()
            {
       IEnumerable<SelectListItem> Level2 = db2.StaggingInternalCashExceptions.Where(x=>x.LoadID==loadid).Select(c => new SelectListItem
            {

                Value = c.Level2.ToString(),
                Text = c.Level2

            }).Distinct();

            return  View();

            }

  [AcceptVerbs(HttpVerbs.Post)]
         public ActionResult Editing_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<StaggingException> results)
         if (results != null && ModelState.IsValid)
         {
             foreach (var result in results)
              var entity = new StaggingException();
                     entity.RowID = result.RowID;
                     entity.Category = result.Category; //this is a textbox in the view for which i get the value
                     entity.Level1 = result.Level1; //gives null
//I'm adding those values to the db. Didn't include all that for the sake of keeping it short.
}
}
public ActionResult GetLevel()
{
IEnumerable Level2=db2.stagingInternalCashExceptions.Where(x=>x.LoadID==LoadID)。选择(c=>new SelectListItem
{
Value=c.Level2.ToString(),
Text=c.Level2
}).Distinct();
返回视图();
}
[接受动词(HttpVerbs.Post)]
公共操作结果编辑\u创建([DataSourceRequest]DataSourceRequest请求,[Bind(Prefix=“models”)]IEnumerable结果)
if(results!=null&&ModelState.IsValid)
{
foreach(结果中的var结果)
var entity=new stagingException();
entity.RowID=result.RowID;
entity.Category=result.Category;//这是视图中的一个文本框,我为其获取值
entity.Level1=result.Level1;//给出空值
//我将这些值添加到数据库中。为了保持简短,没有包括所有这些值。
}
}
网格具有批处理编辑功能,一旦我点击保存更改,网格的数据将发布到控制器,我可以在结果中看到它。但我无法获得下拉列表值。 任何想法或线索请。
谢谢。

这篇文章迟了,但是我有一个类似的问题,对于那些有相同问题的人来说,如果你的模型值是一个可为null的int,那么这个值没有发布在模型中?(从上面的帖子看不到…)然后您需要如下配置DropDownListFor,以避免默认值绑定行为,从而在初始值为null时使用所选项目更新字段。希望这对别人有帮助

Html.Kendo().DropDownListFor(m => m)
.HtmlAttributes(new { data_value_primitive = "true" })

我假设这是一个局部视图-我注意到您的操作指定了一个绑定前缀-调用的局部视图是否具有相同的前缀?@sleeyuen:这不是一个局部视图。我想在同一视图中显示下拉列表和剑道网格。我使用@Html.kendo.DropdownListFor(modelItem=>item.Level1)将下拉列表绑定到模型,但在post上我无法获得下拉列表的选定值,这令人费解。好的-接下来我要检查的是表单是否真的向您的控制器发布了任何内容(通过Chrome开发工具、Fiddler等)。如果数据正在发布,请将其包含在此处,以便我更好地了解细分的位置。@sleeyuen:我添加了更多代码。把它放在小提琴里,这会有点困难,因为整个模型。我在action方法上放置了一个调试点,我可以在结果中看到网格数据,但无法获得所选的下拉列表值。我想我理解您在这里看到的内容,但要确认,您是否可以发布渲染页面的图像。我的意思不是创建一个工作的fiddle,而是使用一个名为Fiddler的程序来查看哪些数据正在从浏览器传递到控制器,这与您可以使用Chrome/IE开发工具上的网络选项卡来检查网络活动的方式大致相同。
Html.Kendo().DropDownListFor(m => m)
.HtmlAttributes(new { data_value_primitive = "true" })