在 Razor 调用我的 HTML Helper 之前调用 Javascript 函数

Call Javascript Function before Razor calls my HTML Helper

我一直在研究 HTML 助手,它会根据您的用户类型隐藏或显示菜单项。

出于这个原因,在我的一个控制器中,我设置了一个会话变量,其值例如 "ADMIN"

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

我面临的问题是在调用设置会话变量的控制器的 Javascript 函数之前调用了 Helper 函数

这就是我调用 HtmlHelper 的方式(通过 Razor)

 @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 之前?

我也试过调用 window 负载这样做:

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

以及其他方法。

我注意到在多次调试之后每次都会调用Helper。我不明白为什么会这样。

我想知道它是否与必须使用 html helpers

的 Web.config 行有关
<add namespace="XSiteManagerWeb.Helpers"/>

所以为了清楚起见,我只想让我的 "ObtenerDatosSesion(); 方法在我的 html 助手之前被调用!

razor 助手在服务器端执行,因此它们将在之前 页面上的任何 JS rendered/executed 执行。

我建议将 ../Home/ObtenerDatosSesion 端点中的任何逻辑移动到与 ../Home/Configuracion 相同的端点。如果要多次调用,可以放在自己的方法中。