为同一属性但不同的视图模型设置唯一的编辑器模板

时间:2013-12-09 12:53:39

标签: asp.net-mvc-4 kendo-ui kendo-grid

我有一个使用kendo tap strip的应用程序,因此所有字段在所有打开的选项卡中应该具有唯一的名称,我唯一的问题是如何为具有唯一名称的相同属性名称创建多个外键编辑器模板对于多个网格,因为组合框应该与视图模型属性名称具有相同的名称,如果我创建多个具有相同名称的组合框编辑器模板,它将在系统中返回冲突,因此是否有任何解决方法我可以在这里用吗?

简单来说  假设我有两个网格(销售订单和采购订单)两个网格都有名为“供应商”的外键列 - 在两个表中都调用了外键供应商ID-,我为每个网格创建了两个编辑器模板 这里是我的模板(两个模板都相同)

@model object
@using MyResource =Resources.Layout;
@( Html.Kendo().ComboBox()
                  .DataTextField("SupplierID")

                      .DataValueField("SupplierID").Name("SupplierID")
                      .Placeholder(MyResource.SelectSupplier)
      .Filter("contains").DataSource(source =>
                      {source.Read(read =>
                          { read.Action("GetSuppliers", "Item");
                          }).ServerFiltering(true);
                      }).AutoBind(false))

因此,如果我打开两个网格,则会发生错误,因为两个网格都具有相同名称的外键组合框(SupplierID)

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

解决了我的问题通过使用ViewData将网格名称传递给编辑器模板,并将组合框的ID属性设置为网格名称+ PropertyName

 Html.Kendo().ComboBox().DataTextField("SupplierID")
        .DataValueField("SupplierID")
        .Name("SupplierID")
    .Filter("contains")
    .DataSource(source =>
    {
        source.Read(read =>
        {
            read.Action("GetSuppliers", "Item");
        })
        .ServerFiltering(true);
    })

     .HtmlAttributes(new Dictionary<string, object> {

            { "id" , ViewData["GridName"] + "_Supplier" }
        })