2015-03-31 44 views
0

我一直在研究一个HTML帮助器,它将隐藏或显示菜单项,具体取决于您是什么类型的用户。在Razor调用我的HTML帮助器之前调用Javascript函数

出于这个原因,在我的控制器中的一个,我设置与值的会话变量,如“ADMIN”

context.Session["perfil"] = "ADMIN" 

我现在面临的问题是,辅助函数被Javascript函数之前调用这就要求,设置会话变量

控制器这是我打电话给我的HtmlHelper(通过剃刀)

@using XSiteManagerWeb.Helpers 
@Html.Raw(Html.MiMenu("../Home/Configuracion", "Configuración")) 

从我_layout。 CSHTML

但这样做,我打电话的功能

<script type="text/javascript">ObtenerDatosSesion();</script> 

其中通过Ajax调用的Controler方法之前

... 
$.ajax({ 
     url: "../Home/ObtenerDatosSesion", 
.... 

问:为什么被的HtmlHelper之前ObtenerDatosSesion();叫即使我把它放在_Layout.cshtml之前?

我也打过电话在窗口负荷这样做:

<body class="Fondoblue" onload="ObtenerDatosSesion();"> 

等方法。

我注意到Helper在每次调试之前都会被调用。我无法弄清的是为什么会发生这种情况。

我不知道这有什么用web.config行人们必须投入使用HTML辅助

<add namespace="XSiteManagerWeb.Helpers"/> 

所以要清楚,我只想让我的"ObtenerDatosSesion();方法被调用在我的html帮手之前!

回答

4

剃刀助手执行服务器端,因此他们将被执行之前任何JS在页面上呈现/执行。

我建议将../Home/ObtenerDatosSesion端点中的任何逻辑移动到与../Home/Configuracion相同的端点。如果它不止一次被调用,你可以使用它自己的方法。

+0

*他们将**总是**之前执行...... * – 2015-03-31 16:53:02

+0

这就是我需要知道的。 – 2015-03-31 20:12:07