2015-03-31 55 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

相關問題