Asp.net mvc 4 方法的动态表达式
我不能让它工作Asp.net mvc 4 方法的动态表达式,asp.net-mvc-4,webgrid,Asp.net Mvc 4,Webgrid,我不能让它工作 @grid.GetHtml( tableStyle: "bordertable", columns: grid.Columns( grid.Column("aaaa", format: @<text> @Roles.GetRolesForUser(@item.UserName).LastOrDefault() </text> ), grid.Column("UserName", "bbbb"), g
@grid.GetHtml(
tableStyle: "bordertable",
columns: grid.Columns(
grid.Column("aaaa", format: @<text> @Roles.GetRolesForUser(@item.UserName).LastOrDefault() </text> ),
grid.Column("UserName", "bbbb"),
grid.Column("FirstName", "cccc"),
grid.Column("LastName", "dddd")
))
没有
@item.UserName
它工作得很好没有(@item.UserName)
它工作得很好,因为如果不精确指定源LastOrDefault
默认情况下返回null
。你可以看到关于这个的文档。所以你可以试着抓住例外来看看 我不完全理解,但我假设您的方法Roles.GetRolesForUser()
返回IEnumerable
。要使用linq扩展,请编写如下代码:
@Roles.GetRolesForUser().LastOrDefault(r=> r.UserName == item.UserName)
不是
此外,由于@已使用@角色定义,因此您不必再次使用@(@Item.UserName)
希望这有帮助它在没有
@item.UserName的情况下也能工作。在我m编写(@item.UserName)`之后,UserName
VS stops recognizeGetRolesForUser()
在它内部是否覆盖了GetRolesForUser()?
@Roles.GetRolesForUser().LastOrDefault(r=> r.UserName == item.UserName)
@Roles.GetRolesForUser(item.UserName).LastOrDefault()
@Roles.GetRolesForUser().LastOrDefault(item.UserName)