Asp.net mvc 如何在剑道网格声明中添加IF语句

Asp.net mvc 如何在剑道网格声明中添加IF语句,asp.net-mvc,if-statement,kendo-ui,datasource,kendo-asp.net-mvc,Asp.net Mvc,If Statement,Kendo Ui,Datasource,Kendo Asp.net Mvc,我正在尝试对两个页面使用一个视图文件,页面中的功能非常相似,但略有不同,因此我希望使用相同的网格,但在数据源中执行if语句以检查用户角色: .DataSource(datasource => datasource .Ajax() if (User.IsInRole("Admin")) { .Read(read => read.Action(MVC.ControllerName.ActionNames.Read, MVC.Con

我正在尝试对两个页面使用一个视图文件,页面中的功能非常相似,但略有不同,因此我希望使用相同的网格,但在数据源中执行if语句以检查用户角色:

.DataSource(datasource => datasource
            .Ajax()
     if (User.IsInRole("Admin")) {
            .Read(read => read.Action(MVC.ControllerName.ActionNames.Read, MVC.Controller.Name).Data("function"))
     } else {
            .Read(read => read.Action(MVC.OtherController.ActionNames.OtherRead, MVC.Controller.Name).Data("function"))
     }
我得到了一堆语法错误(例如)预期;预期的)


网格是使用@(Html.Kendo().grid)…

声明的,如果您将代码更改为以下内容:

.DataSource(datasource => datasource
            .Ajax()
            .Read(read => {
                             if (User.IsInRole("Admin")) {
                              read.Action(MVC.ControllerName.ActionNames.Read, 
                                      MVC.Controller.Name).Data("function");
                            }
                            else
                            {
                            read.Action(MVC.OtherController.ActionNames.OtherRead, 
                                       MVC.Controller.Name).Data("function");
                            }

                           }

        )

那对你应该有用。重要的部分是将
决策
位放在读取中,或者如果您有不同的更新等,甚至放在顶层数据部分。

为什么不在控制器操作中使用
if
呢?我本来打算在控制器操作中使用if,但我认为如果我有不同的操作,事情会变得更简单。我喜欢在控制器中保留逻辑,以分离关注点并便于维护。当用户要求“超级用户”和“有限”角色时,您会怎么做?