如何解决尝试分配默认列值时,为什么在 kendoGrid 上无法将“SomeViewModel”类型的对象转换为“System.String”类型错误?
使用 Telerik KendoGrid 和以下示例,我的 Grid 接受 Someviewmodel 的模型。
public class Someviewmodel{
public int Id { get; set; }
public int StateId { get; set; }
public DateTime EffectiveDate { get; set; }
public string ProductFamily { get; set; }
}
我正在为 ProductFamily 使用 EditorTemplate,它是一个带有 KendoDropDownList 的局部视图。
所有这些都按预期工作,没有问题。唯一需要担心的是在网格中创建新记录。由于它的新记录 ProductFamily 只是空白 b/c 部分视图的 DropDownList 不会激活,直到您单击空白字段以分配值。所以我想在 Field 上设置一个 DefaultValue,基于 Telerik 示例进行设置 -
@(Html.Kendo().Grid<Someviewmodel>()
.Name("Grid")
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(p => p.Id);
model.Field(i => i.Id).Editable(false);
model.Field(i => i.StateId).Editable(false);
model.Field(i => i.EffectiveDate).Editable(true);
model.Field(i => i.ProductFamily).Editable(true).Default(viewmodel["defaultFamily"] as Someviewmodel);
})
))
var defaultValue = new Someviewmodel() { ProductFamily = "Food" };
viewmodel["defaultFamily"] = defaultValue;
问题是这总是抛出错误: “Someviewmodel”类型的对象无法转换为“System.String”类型
嗯.. 看起来好像它想要一个字符串。因此,为了解决这个问题,我在 viewmodel 中分配了一个明确的值来提供它看似想要的东西 -
var defaultValue = new Someviewmodel() { ProductFamily = "Food" };
viewmodel["defaultFamily"] = defaultValue.ProductFamily;
但后来我收到此错误:传递给字典的模型项的类型为“System.String”,但此字典需要类型为“Someviewmodel”的模型项。
我不确定我在这里做错了什么,但此时我陷入了 Catch-22 场景。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。