博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Asp.Net MVC 中如何用JS访问Web.Config中appSettings的值
阅读量:6416 次
发布时间:2019-06-23

本文共 2496 字,大约阅读时间需要 8 分钟。

应用场景:

很多时候我们要在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    {        ///         /// 静态脚本数据        ///         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全局添加这个静态脚本

 

之后我们就可以直接读取这个静态JS中存贮的值了

var url = EricSunData.WebServiceURL + '......';

 

转载地址:http://xfpra.baihongyu.com/

你可能感兴趣的文章
Storm集群安装详解
查看>>
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
php 环境搭建(windows php+apache)
查看>>
让虚拟机的软盘盘符不显示(适用于所有windows系统包括Windows Server)
查看>>
Cygwin不好用
查看>>
jQuery插件之验证控件jquery.validate.js
查看>>
[经验]无线鼠标和无线键盘真的不能用了?——雷柏的重生之路~
查看>>