Asp.net mvc 如何在剑道网格声明中添加IF语句
我正在尝试对两个页面使用一个视图文件,页面中的功能非常相似,但略有不同,因此我希望使用相同的网格,但在数据源中执行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
.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,但我认为如果我有不同的操作,事情会变得更简单。我喜欢在控制器中保留逻辑,以分离关注点并便于维护。当用户要求“超级用户”和“有限”角色时,您会怎么做?