从技术上讲,我所拥有的是工作但是非常慢。
简而言之,我正在查询数据库中的数据,然后创建一个viewmodel,其中包含与包含用户AD数据的对象配对的数据。
这是我的ViewModel:
public class SearchViewModel
{
public List<Submission> submissionList { get; set; }
public LoggedInUser User
{
get
{
return new LoggedInUser();
}
}
}
public class Submission
{
//... All the things ...
}
LoggedInUser
是一个包含几个不同广告属性的帮助程序类,但就此而言,我正在查看名为isAdmin
的bool值。如果admin是True
我想要显示特定列。
这就是我通过Razor / Html进行的方式。
<table class="datatable table table-bordered table-condensed">
<thead>
<tr>
//. . . Column Headers . . .
@if(Model.User.isAdmin)
{
<th />
}
</tr>
</thead>
<tbody>
@foreach (var item in Model.submissionList )
{
<tr id="@item.ID">
//. . . Column Content . . .
@if(Model.User.isAdmin)
{
<td>
<div id="approvalBtn-@item.ID">
<a href="#" onclick="quickApprove(@item.ID)">
<i class="fa fa-check text-success fa-lg" data-toggle="tooltip" data-placement="top" title="Submit for approval!"></i>
</a>
</div>
</td>
}
</tr>
}
</tbody>
</table>
当我删除isAdmin
的检查时,信息显示更快。从5分钟下降到大约10秒钟。
使用javascript可能有更好的实现吗?
答案 0 :(得分:0)
如何实例化SearchViewModel
课程?如果直接执行此操作,则应创建名为isAdmin
的特定属性,并将其值设置为instantiate,如下所示:
public class SearchViewModel
{
public List<Submission> submissionList { get; set; }
public bool isAdmin { get; set; }
}
然后..
var user = new LoggedInUser();
var viewModel = new SearchViewModel {
submissionList = submissionList, //supose you already have this value
isAdmin = user.isAdmin
};
你的剃刀会被修改为:
<table class="datatable table table-bordered table-condensed">
<thead>
<tr>
//. . . Column Headers . . .
@if(Model.isAdmin)
{
<th />
}
</tr>
</thead>
<tbody>
@foreach (var item in Model.submissionList )
{
<tr id="@item.ID">
//. . . Column Content . . .
@if(Model.isAdmin)
{
<td>
<div id="approvalBtn-@item.ID">
<a href="#" onclick="quickApprove(@item.ID)">
<i class="fa fa-check text-success fa-lg" data-toggle="tooltip" data-placement="top" title="Submit for approval!"></i>
</a>
</div>
</td>
}
</tr>
}
</tbody>
</table>