动态表达方法

时间:2013-03-26 12:04:54

标签: 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"),
       grid.Column("FirstName", "cccc"),
       grid.Column("LastName", "dddd")
     ))

问题在于

@Roles.GetRolesForUser().LastOrDefault(@item.UserName)

没有@item.UserName它完美无缺

3 个答案:

答案 0 :(得分:1)

@Roles.GetRolesForUser(item.UserName).LastOrDefault()

@Roles.GetRolesForUser().LastOrDefault(item.UserName)

因为@已经使用@Roles定义了你不必再次使用@(@ Item.UserName)

希望这有帮助

答案 1 :(得分:0)

没有(@item.UserName)的情况下有效,因为如果你没有精确确定源LastOrDefault默认返回null。您可以看到有关here的文档。所以你可以尝试捕捉这个例子。

答案 2 :(得分:0)

我不明白,但我认为您的方法Roles.GetRolesForUser()会返回IEnumerable。对于使用linq扩展,请写如:

@Roles.GetRolesForUser().LastOrDefault(r=> r.UserName == item.UserName)