根据用户组成员身份删除表列

时间:2016-07-01 17:45:01

标签: c# html asp.net-mvc razor

从技术上讲,我所拥有的是工作但是非常慢。

简而言之,我正在查询数据库中的数据,然后创建一个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可能有更好的实现吗?

1 个答案:

答案 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>