2017-04-13 57 views
0

我不知道如何搜索我要找的内容。我尝试的所有搜索词似乎都会返回完全不相关的结果。所以,如果这是一个愚蠢的问题,我会提前道歉,但如果这是可能的,它似乎会使一些事情变得更有效率。我刚刚在一年前继承了我的第一个MVC网站&我得到了解,但我仍然有很多东西需要学习。MVC&从Controller ActionResult传递数据到页面的JavaScript

当用户在浏览器中点击URL时,为(CS)控制器调用“OnActionExecuting”方法,并执行用户,权限等的所有验证(我试图保留这个简单,但如果你需要更多信息,请告诉我)然后调用“public ActionResult Index()”,它加载CSHTML文件并将它们显示给用户。此时,CSHTML页面可以访问一些有限的数据,这些数据已经传回给“ViewBag”(不知道这是它的通用名称还是由前一个程序员设置)设置。

然后页面调用它的(JavaScript)控制器。从我读过的内容来看,JavaScript目前无法访问“ViewBag”数据或服务器上的任何内容。 JS然后调用存在于完全相同(CS)控制器中的AJAX方法。它再次执行完全相同的用户/权限检查,然后检索尝试检索的任何数据。

所以我想我的问题是,是否有一种方法可以传回“每页”JSON数据(如用户的名称),以便它不必检索,或者这是在做一些不按顺序的事情通过在第一位进行初始数据检查,或者是什么?我厌恶那么多功能被多次调用来完成同样的事情。事实上,我没有在这个迭代中对它进行测试,但是如果在每个页面上调用了多个AJAX(除非它们应该在可能的情况下合并),它将根据AJAX调用执行一次用户/权限检查。

有人可以帮我理解我错过了什么吗?

+0

你能在你的短文中简洁一些吗? –

+0

@MuhammadRamzan上次我问了一个问题,我没有提供足够的信息,人们对我的名声不满。我无法在这里赢得胜利。 – Bob

+0

你是否希望你的json数据只能从服务器检索一次,或者你想从你的json数据请求中删除安全检查? –

回答

0

用于您的方案解决方法如下: -

  1. 传递您共同 “每一页” 数据.ViewBag对象在OnActionExecuting()

  2. 在您的“视图\共享\ _Layout.cshtml”创建一个JavaScript块,并以类似的方式写你的JavaScript:

    <script> 
        var username = "@ViewBag.Username"; 
    </script> 
    

当您呈现.cshtml时,@ ViewBag.Username的剃须刀电话将检索该对象内保存的任何内容,并将其填入引用内,因此在到达您的浏览器之前成为JavaScript的一部分。