MVC - 如何根据访问过的页面保存用户ID的css更改?

时间:2018-02-18 02:14:47

标签: javascript c# jquery css model-view-controller

我希望我的网站能够跟踪用户会话并在访问页面时删除“.disabled”类,从而“解锁”下一页并在用户重新登录时保存这些更改。所以当一个细分已完成,解锁下一个。

我有ID访问的数据库跟踪页面,但无法理解如何检查数据库并在页面加载时应用css更改。

.disabled {
pointer-events: none;
cursor: default;
opacity: 0.6; } //Remove this class to unlock content

1 个答案:

答案 0 :(得分:0)

以下是一些可能性: 假设您在加载页面之前以某种方式查询数据库。您可以在获取页面数据时在模型上添加一个属性。然后让view.cshtml从模型接收数据,放入在HTML中或使用razor @ model.VisitIDs或类似的东西。

另一种可能性是在控制器中编写一个方法,并在页面加载后使用ajax调用该方法。例如:

假设你有VisitMe.cshtml,VisitMe.js,VisitMeModel.cs,VisitMeController.cs

javascript可能如下所示:

    // namespace used to organize code not required
    var VisitMeNameSpace = {

    var currentUser = GetCurrentUser();
    var pageName = GetPage();
    var visitMe_GetVisitMeVisitors = "ProjectName/VisitMe/GetVisitMeVisitors";
    var args = {
                page: pagename
               }

    $.ajax({
            url: visitMe_GetVisitMeVisitors,
            type: "GET",
            data: args
        })
        .done(function (data) {
            if (data is good)
                $("selector").removeClass("disabled");
        })
        .fail(function(){
            alert("There was a problem getting visitor IDs for this page");
        });
}// end VisitMeNameSpace 

    // In your C# controller maybe something like 
    public JsonResult GetVisitMeVisitors(string page)
    {
        // whatever you are currently using to query database do that here. We will call this from VisitMe.js
        var visitContainer = new ProjectContainerForVisitMe();
        var visitRecords = (from record in visitContainer.VisitMeTableOrModel where record.page == page select record).ToList();

        return Json(visitRecords, JsonRequestBehavior.AllowGet);
    }

如果您需要更清晰,或者看起来我误解了这个问题,请告诉我。