Kendo 带有下拉列的网格未分配整数值

Kendo grid with dropdown column does not assign integer value

如果有人可以就我的问题提出建议,我将不胜感激。 我有一个包含集合的模型:

public class Customer
{
   public Customer()
   {
       this.CustomerAddresses = new HashSet<CustomerAddress>();
   }
  //..properties
   public virtual ICollection<CustomerAddress> CustomerAddresses {get; set;}
}

在我的 'Create' 视图中,我有一个带有 incell 编辑的网格,它允许我存储 CustomerAddress 的集合,然后与 Customer 模型一起传递给控制器​​:

@model Customer
 //Customer inputs...

@( Html.Kendo().Grid(Model.CustomerAddresses)
    .Name("CustomerAddresses")
    .ToolBar(toolbar => { toolbar.Create(); })
    .Columns(columns =>
    {
        columns.Bound(p => p.AddressID).Hidden();       
        columns.Bound(p => p.Type)             //Foreign key of type string
               .EditorTemplateName("DropDownTemplate")
               .EditorViewData(new { ddname = "Type" })
               .ClientTemplate("#= Type #" +
        "<input type='hidden' name='CustomerAddresses[#= index(data)#].Type' value='#= Type #'  />"); 

        columns.Bound(p => p.Region)          //Foreign key of type int?
               .EditorTemplateName("DropDownTemplate")
               .EditorViewData(new { ddname = "Region" })
               .ClientTemplate("#= Region #" +
        "<input type='hidden' name='CustomerAddresses[#= index(data)#].Region' value='#= Region #'  />"); 

    })    
    .Editable(editable => editable.Mode(GridEditMode.InCell))
    .DataSource(dataSource =>
     dataSource.Ajax()
    .Model(model =>
    {
        model.Id(u => u.AddressID);

    })
    ))

下拉模板:

@if (ViewData["ddname"] == "Region")
{      
     @Html.Kendo().ComboBox().Name(ViewData["ddname"].ToString())
                  .BindTo(SelectListProvider.GetCatalog<Region>())
}
else
{   
     @Html.Kendo().ComboBox().Name(ViewData["ddname"].ToString())
                  .BindTo(SelectListProvider.GetCatalog<AddressType>())
}

问题是,当我从 Region 整数列的下拉列表中 select 某些项目并在单元格外按下时,它不会将 selected 值分配给网格列。我看到一个空单元格。 但是,当我 select 在 Type 字符串单元格中并按到外面时,我看到了 selected 值。

我做错了什么? int 列有什么问题?

非常感谢

好吧,我终于明白了。我不使用模板,而是使用外键以及相同列的隐藏字段:

 columns.ForeignKey(p => p.Type, someselectlist, "Value", "Text");
 columns.ForeignKey(p => p.Region, anotherselectlist, "Value", "Text");

 columns.Bound(p => p.Type).ClientTemplate("#= Type #" +
        "<input type='hidden' name='Addresses[#= index(data)#].Type' value='#= Type #'  />").Hidden();
 columns.Bound(p => p.Region).ClientTemplate("#= Region #" +
        "<input type='hidden' name='Addresses[#= index(data)#].Region' value='#= Region #'  />").Hidden(); 

GridForeignKey.cshtml

 Html.Kendo().DropDownListFor(m => m)
        .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
        .HtmlAttributes(new { data_value_primitive = true })

现在,它如我所愿,所有值都提交给控制器。