Kendo MVC的DropDownListFor无法将选定值绑定到模型。

4

@(Html.Kendo().DropDownListFor(model => model.ServiceID)
  .OptionLabelTemplate("#=optionLabel#")
  .ValueTemplate("#=Code#(#=Rate#) - #=Description#")
  .Template("#=Code#(#=Rate#) - #=Description#")
  .DataTextField("Code")
  .DataValueField("ServiceID")
  .DataSource(d =>
  {
    d.Read(read =>
    {
      read.Action("GetServiceRepository", "Service").Type(HttpVerbs.Post);
    });

  })
  .Events(e => e.Change("onWorkOrderJobServiceChange"))
  .HtmlAttributes(new { required = "required" })
  .OptionLabel(new { optionLabel = Resources.Wording.SelectOne, ServiceID = 0, Rate = 0, Code = "", Description = "" })
)

我有一个下拉列表,想将选定的值绑定到模型的ServiceID字段(类型为int)。但是,无论我选择哪个项目,ServiceID字段始终为空! 它甚至不是可空类型int?发生了什么,如何实现我的目标?
1个回答

5

Kendo DropDownList 拥有 ValuePrimitive 特性。默认情况下,它为 false,所选项目返回文本和值对。

@(Html.Kendo().DropDownListFor(model => model.ServiceID)
  .ValuePrimitive(true)
  ....

谢谢你提供的解决方案,它很有效!只有一件事让我感到困惑,那就是.DataValueField()是什么意思?我原以为它定义了哪个字段作为选定的值,但似乎选定的值总是(Text, Value)对吗? - shole
理想情况下,如果我们设置了DataValueField,我们应该得到值而不是一对。不幸的是,它并没有。我同意这一点起初也让我感到困惑。 - Win

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接