C# 如何在剑道网格中显示GUID?

C# 如何在剑道网格中显示GUID?,c#,asp.net-mvc,kendo-grid,C#,Asp.net Mvc,Kendo Grid,我只想在视图中的剑道网格中显示模型的GUID,但每次都会出现以下错误: 传递到字典的模型项的类型为“System.Guid”, 但此词典需要“System.String”类型的模型项 这是我的网格代码: @(Html.Kendo().Grid(Model.revisions) .Name("RevisionsGrid") .Columns(columns => {

我只想在视图中的剑道网格中显示模型的GUID,但每次都会出现以下错误:

传递到字典的模型项的类型为“System.Guid”, 但此词典需要“System.String”类型的模型项

这是我的网格代码:

@(Html.Kendo().Grid(Model.revisions)
                    .Name("RevisionsGrid")
                    .Columns(columns =>
                    {
                        columns.Bound(p => p.RevisionInfo.Id).Title("Revision ID");
                        columns.Bound(p => p.Accident.Id).Title("Accident ID")
                            .ClientTemplate("#= (Accident.Id == null) ? '' : Accident.Id.toString() #");
                        columns.Bound(p => p.RevisionInfo.RevisionDate).Title("Date Modified");
                        columns.Bound(p => p.RevisionInfo.User.Name).Title("By User");
                        columns.Command(command => command.Custom("ViewPdf").Text("View PDF").Click("getPdf"));
                    })
                    .Selectable()
                    .Pageable(p => p.PageSizes(new[] { 5, 10, 25 }))
                    .DataSource(dataSource => dataSource
                    .Server()
                    .Model(model =>
                        {
                            model.Id(p => p.RevisionInfo.Id);
                            model.Field(p => p.Accident.Id).DefaultValue(Guid.NewGuid());
                        }))
问题在于绑定到contract.Id(GUID类型)的第二列。我试图解决这个问题,包括将ClientTemplate添加到该列&为其添加一个默认值,但这两个都没有帮助。我还尝试在列定义中添加ToString(),但随后出现了另一个错误,即.Bound()仅将属性访问方法作为参数


是否有地方将GUID转换为字符串以便在此处显示它?

我找到了。为了让剑道网格接受非字符串的内容,需要为列指定一个模板,在该模板中可以调用
ToString()
。我不能把它称为绑定

columns.Bound(p => p.Accident.Id).Title("Accident ID")
    .Template(p => p.Accident.Id.ToString());

只是想知道Model.revisions中contract.Id的数据类型是什么?它是Guid还是字符串?能否尝试将此属性转换为字符串?@Anil Vangari它是Guid。此时我不想更改数据模型,因为在数据库中它实际上是一个Guid,而所有其他模型的id属性都使用Guid,更改它可能会影响的不仅仅是这个网格。Guid.NewGuid().ToString()有什么问题?啊-这就是我没有正确阅读代码的原因。这就是我喜欢将“视图模型”与“数据模型”分开的原因之一。您的视图模型可以是字符串,而数据模型是GUID,您只需提供用于在模型之间初始化/更新的转换代码,其他一切都可以正常工作。@SteveG您的注释实际上非常有用。我们有一个独立于数据模型的视图模型&除我刚才添加的新实体外,其他所有内容都是字符串。哇,哈哈。对于MVC来说还是个新手,尽管我找到了一个解决方法,但我必须找到一个更好的方法来表示这一点。