如何从 UserId 显示会员用户名
How to display Membership UserName from UserId
我正在尝试完成显示项目评论的任务。
在这个视图中,我使用 Kendo UI 网格:
景色
@(Html.Kendo().Grid<Model>()
.Name("ReviewCommentsGrid")
.Columns(
columns =>
{
columns.Bound(rc => rc.UserId);
columns.Bound(rc => rc.Comment);
columns.Bound(rc => rc.CommentDate);
columns.Bound(rc => rc.UpdateCommentDate);
columns.Command(cmd => cmd.Edit());
}
)
.Editable(editable => editable.Mode(GridEditMode.InLine);
.Pageable()
.Sortable()
.DataSource(
dataSource => dataSource
.Ajax()
.Sort(sort => sort.Add("UpdateCommentDate").Descending())
.Sort(sort => sort.Add("CommentDate").Descending())
.Model(model =>
{
model.Id(rc => rc.ReviewCommentId);
model.Field(rc => rc.Comment).Editable(true);
model.Field(rc => rc.UserId).Editable(false);
model.Field(rc => rc.CommentDate).Editable(false);
model.Field(rc => rc.UpdateCommentDate).Editable(false);
})
.Events(events => events.Error("error_handler"))
.Read(read => read.Action("ReadReviewComments", "Controller"))
.Update(update => update.Action("UpdateReviewComment", "Controller"))
)
)
问题
如此处所示,我在第一列中使用 UserId。这是我 ASP.NET 会员 table 中的一个 Guid。但是,我不想显示为 Guid,而是显示为 UserName。我不能离开单元格成为 Guid。
我尝试了以下变化:
columns.Bound(rc => Membership.GetUser(rc.UserId).UserName);
结果:空白table单元格
columns.Template(@<text>@Membership.GetUser(rc.UserId).UserName</text>);
结果:空白table单元格
如有任何建议,我们将不胜感激。
谢谢。
编辑
我决定放弃 Ajax
和 DataSource
绑定。我首先将模型列表绑定到视图的父视图模型(如果在控制器中填充此列表)。
1)从网格中删除数据源绑定
2)删除Command.Edit()
并替换为Command.Custom()
,像这样:
columns.Command(cmd => cmd.Custom("Update").Text("Update").Click("updateComment"));
3)现在既然没有Ajax,我可以用服务器端Column.Template
4)现在我可以绑定服务器端了:
columns.Template(@<text><span>@Membership.GetUser(item.UserId).UserName</span></text>).Title("User Name);
谢谢,
杰森
您必须使用具有 Ajax 绑定的 ClientTemplate。
columns.Template(@<text></text>)
.ClientTemplate(@<text>@Membership.GetUser(#= UserId #)
.UserName</text>);
http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/configuration#clienttemplate
我正在尝试完成显示项目评论的任务。 在这个视图中,我使用 Kendo UI 网格:
景色
@(Html.Kendo().Grid<Model>()
.Name("ReviewCommentsGrid")
.Columns(
columns =>
{
columns.Bound(rc => rc.UserId);
columns.Bound(rc => rc.Comment);
columns.Bound(rc => rc.CommentDate);
columns.Bound(rc => rc.UpdateCommentDate);
columns.Command(cmd => cmd.Edit());
}
)
.Editable(editable => editable.Mode(GridEditMode.InLine);
.Pageable()
.Sortable()
.DataSource(
dataSource => dataSource
.Ajax()
.Sort(sort => sort.Add("UpdateCommentDate").Descending())
.Sort(sort => sort.Add("CommentDate").Descending())
.Model(model =>
{
model.Id(rc => rc.ReviewCommentId);
model.Field(rc => rc.Comment).Editable(true);
model.Field(rc => rc.UserId).Editable(false);
model.Field(rc => rc.CommentDate).Editable(false);
model.Field(rc => rc.UpdateCommentDate).Editable(false);
})
.Events(events => events.Error("error_handler"))
.Read(read => read.Action("ReadReviewComments", "Controller"))
.Update(update => update.Action("UpdateReviewComment", "Controller"))
)
)
问题 如此处所示,我在第一列中使用 UserId。这是我 ASP.NET 会员 table 中的一个 Guid。但是,我不想显示为 Guid,而是显示为 UserName。我不能离开单元格成为 Guid。
我尝试了以下变化:
columns.Bound(rc => Membership.GetUser(rc.UserId).UserName);
结果:空白table单元格
columns.Template(@<text>@Membership.GetUser(rc.UserId).UserName</text>);
结果:空白table单元格
如有任何建议,我们将不胜感激。
谢谢。
编辑
我决定放弃 Ajax
和 DataSource
绑定。我首先将模型列表绑定到视图的父视图模型(如果在控制器中填充此列表)。
1)从网格中删除数据源绑定
2)删除Command.Edit()
并替换为Command.Custom()
,像这样:
columns.Command(cmd => cmd.Custom("Update").Text("Update").Click("updateComment"));
3)现在既然没有Ajax,我可以用服务器端Column.Template
4)现在我可以绑定服务器端了:
columns.Template(@<text><span>@Membership.GetUser(item.UserId).UserName</span></text>).Title("User Name);
谢谢,
杰森
您必须使用具有 Ajax 绑定的 ClientTemplate。
columns.Template(@<text></text>)
.ClientTemplate(@<text>@Membership.GetUser(#= UserId #)
.UserName</text>);
http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/configuration#clienttemplate