从JavaScript读取web.config
有没有什么办法,我可以阅读configuration值在web.config与JavaScript? 我为什么要这样做?
我有一个计时器在我的网站,这将popup一个模式对话框倒数计时器(倒计时2分钟),如果用户不活动20分钟。 如果用户没有回应,则将其注销。 如果他这样做,它会ping服务器(维护会话)并保持会话活着
这15分钟在js文件中被硬编码。 我宁愿要从一个configuration文件/其他文件,而不是硬编码到JS中捡起它
这里是代码片段
$.fn.idleTimeout = function(options) { var defaults = { //I would like to pick these values from some config file inactivity: 900000, //15 minutes noconfirm: 120000, //2 minutes sessionAlive: 900000, //15 minutes click_reset: true, logout_url: '/Views/Pages/Timeout.aspx' }
有什么build议么?
编辑:这是在一个单独的js文件。 执行<%=%>会给出错误“非法XML字符[Break on this error]不活动:<%= ConfigurationManager.AppSettings [”Inactivity“]%>;
你可以从ASP.NET生成你的JavaScript。
然后,只需在服务器端将这些设置写入您的var defaults
如下所示:
var defaults = { inactivity: <%=ConfigurationManager.AppSettings["Inactivity"] %> }
编辑:
如果你想让你的JavaScript保持静态的js文件,你仍然可以从ASP.NET应用程序呈现的一个小的<script>
初始化你的var defaults
。 您的设置将是全局的,就像web.config
的AppSettings
一样。
将它们作为variables从视图中传递。
<script type="text/javascript"> // needs to reside in your *.aspx file. $(function() { initPage(<%= Settings.Default.Inactivity %>, <%= Settings.Default.NoConfirm %>, <%= Settings.Default.LogoutUrl %>) }); // Can reside in your *.aspx or in a *.js file. function initPage(inactivity, noconfirm, logoutUrl) { $.fn.idleTimeout = function(options) { inactivity: inactivity, noconfirm: noconfirm, logout_url: logoutUrl }; }; </script>
重复尽可能多的变数。
它不可能从单独的静态JS文件直接访问configuration文件。 这样做的一个方法是在.aspx页面中添加java脚本。
我的Webconfiguration
<appSettings> <add key="test" value="textBox"/> </appSettings>
我的aspx页面
我们正在全局设置这个variables,所以我们可以在我们的静态js文件我的js文件home.js中访问这个variables
function ReadConfigSettings() { alert( test); }
所以我们可以通过这种方式从javascript读取webconfiguration值
通常,您不希望web.config
直接访问客户端,因为它可能包含有关您的configuration的一些重要信息(例如,您正在使用的数据库的凭据)。
最好使您的JS文件变为dynamic并从您的configuration添加适当的参数。 例如:
$.fn.idleTimeout = function(options) { var defaults = { //I would like to pick these values from some config file inactivity: <%=ConfigurationManager.AppSettings["Inactivity"].ToString() %>, noconfirm: <%=ConfigurationManager.AppSettings["NoConfirm"].ToString() %>, //2 minutes sessionAlive: <%=ConfigurationManager.AppSettings["SessionAlive"].ToString() %>, //15 minutes click_reset: true, logout_url: '/Views/Pages/Timeout.aspx' }
把这些值放到configuration文件中后,在你要使用该值的页面上放这个java脚本的方法如下:你将在java脚本中作为全局访问这个值,不需要声明它。
在网页上configuration:
</appSettings> <add key="varName" value="1" /> </appSettings>
在html页面上:
<script> var varName= '@System.Configuration.ConfigurationManager.AppSettings["varName"]'; </script>
让你的JS文件变成dynamic的,并通过可以读取你的web.config的服务器端脚本写出超时
作为一个例子,你有一个appsettingsvariables定义为
add key =“ApplicationId”value =“2”
因为从一个JavaScript文件你不能读取(因为这是驻留在服务器),你可以做的是在主文件中定义variables。 所以你的主文件将包含java脚本variables。
“<%var appId = ConfigurationManager.AppSettings [”ApplicationId“];%>”
现在从java脚本文件中可以访问这个variables,因为这个siteHostvariables在java脚本中有一个全局作用域。
所以你可以在.js文件中访问这个variables,
警报(APPID);