在Asp.Net MVC 中如何用JS访问Web.Config中appSettings的值
应用场景:
很多时候我们要在Web.Config中添加appSettings的键值对来标识一些全局的信息,比如:调用service的domain,跳转其他网站页面的url 等等;
那么此时就涉及到了一个问题,如何在JS中去访问这些config信息?
我们主要的思路就是:在后台读取appSetting的值保存在ViewBag中,然后前台JS直接去访问ViewBag所对应的值。
详细信息请看如下三种解决方案:
解决方案1):
向FilterConfig添加注册,在Action Result执行之前,将获取的appSetting的值保存到ViewBag中
public class RegisterUrlConfig : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.Controller.ViewBag.RegisterUrl = ConfigurationManager.AppSettings["SomeKeyName"];
}
}
然后将RegisterUrlConfig添加到FilterConfig中(默认情况下FilterConfig在project项目初期会存在App_Start文件夹下)
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new RegisterUrlConfig());
}
}
最后在Application_Start 中完成 FilterConfig的调用注册(默认情况下Application_Start 在Global.asax.cs中)
protected void Application_Start()
{
AutofacConfig.Register();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
之后我们就可以用JS对ViewBag中的值进行读取了
var regUrl = @Html.Raw(Json.Encode(ViewBag.RegisterUrl));
解决方案2):
添加BaseController,并且在其中完成对ViewBag的赋值,然后让其他Controller继承之
public class BaseController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
ViewBag.WebServiceURL = ConfigurationManager.AppSettings["SomeKeyName"] != null ? ConfigurationManager.AppSettings["SomeKeyName"].ToString() : "";
}
}
之后我们就可以用JS对ViewBag中的值进行读取了
var wsUrl = @Html.Raw(Json.Encode(ViewBag.WebServiceURL));
解决方案3):
在HomeController中提供添加静态脚本数据的方法
public class HomeController : Controller
{
/// <summary>
/// 静态脚本数据
/// </summary>
public JavaScriptResult EricSunData()
{
var webServiceURL = ConfigurationManager.AppSettings["SomeKeyName"] != null ? ConfigurationManager.AppSettings["SomeKeyName"].ToString() : ""; var data = new
{
WebServiceURL = webServiceURL
}; var js = "var EricSunData = " + new JavaScriptSerializer().Serialize(data); return JavaScript(js);
}
}
然后在对应的页面中或者Layout全局添加这个静态脚本
<script src="~/Home/EricSunData"></script>
之后我们就可以直接读取这个静态JS中存贮的值了
var url = EricSunData.WebServiceURL + '......';
在Asp.Net MVC 中如何用JS访问Web.Config中appSettings的值的更多相关文章
- asp.net mvc 3 配置全局错误处理 Web.config中设置CustomError
摘自: http://www.myexception.cn/web/1130191.html asp.net mvc 配置全局异常处理 Web.config中设置CustomError Web.con ...
- asp.net 多个域名重定向,在web.Config中配置
一个网站有多个域名,但是需要在访问其中某个域名之后跳转到另一域名. Web.config 中配置 </system.webServer> <!--重定向 域名 开始--> &l ...
- web.config中配置数据库(多数据)连接的两种方式
这是我的第一篇文章,既然是第一篇了,那就从最基础的只是说起--web.config中配置数据库连接. 网上有很多这方面的资料,但发现并没有一篇从头到位很清楚明了说完的,今天就把我的整理写在这里吧. 在 ...
- 因为此控件已在 web.config 中注册并且与该页位于同一个目录中
在web.config文件配置了用户控件 <pages> <controls> <add tagPrefix="my" tagName="l ...
- ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩
JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)
ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...
- ASP.NET MVC之Bundle压缩JS和CSS
介绍Bundle之前先引用<淘宝技术这十年>中一段话,对Web前端稍微有点常识的人都应该知道,浏览器下一步会加载页面中用到的CSS.JS(JavaScript).图片等样式.脚本和资源文件 ...
- asp.net mvc处理css和js版本问题
当服务的修改了js和css内容后,发布到IIS服务器上,总是导致客户端内容显示不正确,原因是客户端存在缓存,还是加载的原来的js和css问题. 在css或js后面添加版本号,例如: <scrip ...
- ASP.NET MVC系列:web.config中ConnectionString aspnet_iis加密与AppSettings独立文件
1. web.config中ConnectionString aspnet_iis加密 web.config路径:E:\Projects\Libing.Web\web.config <conne ...
随机推荐
- JS 的实例和对象的区别
对于传统的OOP思想,JS的语法确实比较难搞,其中之一就是实例和对象的区别. 什么是实例? 实例是类的具体化产品. JS语法没有类这个概念(当然ES6引用了类这个概念).只能通过构造函数来创建类,例如 ...
- MyBatis Cache配置
@(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ...
- JS 获取CSS属性值
obj: 元素对象 attribute: 属性 返回值:该对象这个属性的值 function getDefaultStyle(obj,attribute){ // 返回最终样式函数,兼容IE和DOM, ...
- api签名
当你提交以上信息时,办公逸将发送GET请求到填写的URL,GET请求将携带四个参数, 参数 描述 是否必带 signature 办公逸签名,signature结合了企业填写的token,请求中的tim ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- vmware workstation安装 Mosrosoft Runtime DLL安装程序未能完成安装
不要点确定.开始菜单运行输入'%temp%',在弹出的窗体中找到一个文件名中含'{132E3257-14F1-411A-BC6C-0CA32D3A9BC6}~setup'(不一定一样,反正就是第一行的 ...
- 【jQuery】初始化的三种方法
JQ初始化方法实际上有两种,由于美元符号可以定义 jQuery,那么就有三种方法可以进行初始化操作,根据个人习惯来选择吧! 第一种 $(document).ready(function(){ // j ...
- vi 的使用
Vi 分三种模式:一般模式,编辑模式,和命令模式 一般模式: 光标移动,搜索与替换,删除,复制,粘贴 编辑模式:插入或者替换文本 命令模式:读取.保存文件 一般模式 光标移动: h(左), j(下), ...
- jcFeather For Maya 2012免费版
jcFeather羽毛插件有Maya2012免费试用版. 免费版有正版的所有功能,可制作羽毛,可渲染,但是一个Maya场景文件只能有3个jcFeather 节点和3个jcPreFeather节点. j ...
- webpack 配置文件
现如今,webpack非常的受欢迎,比较火的几款js框架都推荐使用webpack来构建项目,而webpack也确实非常强大,但是配置webpack缺常常带来很多问题,接下来就写一下我自己遇到的一些坑. ...