从我的 MVC 应用程序获取会话值到我的 Javascript 中
Get a Session value from my MVC app into my Javascript
这不是
标准,所以请在标记重复之前阅读。
在我们的 MVC 应用程序中 在我们的_Layout.cshtml
顶部,我们像这样加载脚本:
@Scripts.RenderFormat("<script src='{0}' defer></script>", "~/bundles/scripts")
在_Layout.cshtml
的底部,我们有这个:
@RenderSection("scripts", required: false)
出于我无法控制的原因,我们必须推迟。 :(
此捆绑包包含 jquery 文件。另一个文件叫做 Script.js
,它在 jQuery 之后加载,并有一个名为 setCollapse(collapse)
的函数。
它看起来像这样:
function setCollapse(collapse) {
debugger;
alert(collapse);
if (collapse == 'False') {
$('.collapse').collapse("show");
} else {
$('.collapse').collapse();
}
}
我想在我的 MVC 视图加载上将该 javascript 函数一起使用会话值,如下所示:
@section scripts
{
<script>
$(document).ready(function() {
debugger;
var collapse = '@Session["Collapse"].ToString()';
setCollapse(collapse);
});
</script>
}
但我继续得到:
未捕获的引用错误: $ 未定义
如何让页面加载时将会话值传递到我的 javascript/jQuery 中?
这是我是如何解决的。当然,这比我想象的要简单。
在我们_Layout.cshtml
顶部的MVC应用程序中,我这样做:
<script>
var collapse = '@Session["Collapse"].ToString()';
</script>
@Scripts.RenderFormat("<script src='{0}' defer></script>", "~/bundles/scripts")
RenderFormat
加载jQuery和我的script.js
文件。
然后在我的脚本中.js我这样做:
$(document).ready(function () {
//....
// Global collapse value
if (collapse == 'False') {
$('.collapse').collapse("show");
} else {
$('.collapse').collapse("hide");
}
});
你需要添加
@RenderSection("scripts", required: false)
在布局文件中的结束正文标记之前。只要你的jquery在此之前被加载,它应该就可以工作。
编辑
在标题中添加此内容
<script type="text/javascript">
window.$ = (function () {
var q = [], f = function (cb) {
q.push(cb);
};
f.attachReady = function ($) {
$(function () {
$.each(q, function (i, f) {
f();
});
q.length = 0; // clear it, just in case
});
return $;
}
return f;
})();
</script>
然后下面在正文标签结束之前
<script type="text/javascript">
$.noConflict();
$ = $.attachReady(jQuery);
</script>
这将延迟所有 jquery 依赖代码,并在加载 jquery 后运行它们。
编辑 2
<script type="text/javascript">
$.noConflict();
$ = $.attachReady(jQuery);
</script>
这应该是正文标签结束前的最后一件事。
相关文章:
- 我的javascript for循环不起作用
- 如何将我的javascript库公开给其他客户端使用
- 可以Resharper在我的javascript函数声明中添加分号
- 为什么我的JavaScript堆栈排序函数不起作用
- 页面在我的javascript执行后重新加载,我不希望它这样做
- MVC正在忽略我的Javascript文件
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- 我的javascript太慢了
- 由于某种原因,我的JavaScript函数无法工作
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 我的Javascript代码出错
- 为什么我的javascript和jquery源文件始终不加载
- AJAX:为什么不是't我的javascript与内容一起加载
- 为什么不是't我的javascript向Project Euler返回正确答案's排名第一
- 为什么当我在带有锚点的页面之间移动时,Rails不重新加载我的javascript文件
- Num doenst在我的javascript中工作
- 在我的JavaScript模块中绑定一个点击事件
- 为什么我的JavaScript函数没有返回选中的数组值
- 使用Ajax将我的Javascript变量传递给PHP