在Asp.Net MVC 中如何用JS访问Web.Config中appSettings的值
2016-11-10 14:41
471 查看
应用场景:
很多时候我们要在Web.Config中添加appSettings的键值对来标识一些全局的信息,比如:调用service的domain,跳转其他网站页面的url 等等;
那么此时就涉及到了一个问题,如何在JS中去访问这些config信息?
我们主要的思路就是:在后台读取appSetting的值保存在ViewBag中,然后前台JS直接去访问ViewBag所对应的值。
详细信息请看如下三种解决方案:
解决方案1):
向FilterConfig添加注册,在Action Result执行之前,将获取的appSetting的值保存到ViewBag中
然后将RegisterUrlConfig添加到FilterConfig中(默认情况下FilterConfig在project项目初期会存在App_Start文件夹下)
最后在Application_Start 中完成 FilterConfig的调用注册(默认情况下Application_Start 在Global.asax.cs中)
之后我们就可以用JS对ViewBag中的值进行读取了
解决方案2):
添加BaseController,并且在其中完成对ViewBag的赋值,然后让其他Controller继承之
之后我们就可以用JS对ViewBag中的值进行读取了
解决方案3):
在HomeController中提供添加静态脚本数据的方法
然后在对应的页面中或者Layout全局添加这个静态脚本
之后我们就可以直接读取这个静态JS中存贮的值了
很多时候我们要在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开发中,web.config文件如何配置数据库链接
- ASP.NET MVC系列:web.config中ConnectionString aspnet_iis加密与AppSettings独立文件
- C#如何把 asp.net webconfig的appSettings分离到单独文件
- ASP.NET MVC 3 使用 Razor 如何在 Web.config 宣告預設的 Namespaces
- Asp.net中Web.config 页面访问按角色授权配置
- 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作
- 关于asp.net(c#),webconfig中如何定义一个字符串让所有页面共同使用?
- 如何配置Web.config文件 for ASP.NET
- Asp.net中Web.config 页面访问按角色授权配置
- 如何在没有安装 ASP.NET MVC 3 的 Web 服务器上运行 ASP.NET MVC 3 应用程序
- Prevent ASP.NET web.config inheritance, and inheritInChildApplications attribute -ASP.NET如何防止web.config向下(子应用程序)继承?
- asp.net的登录验证方法 Web.config 的作用范围 拒绝与巧用允许 访问权限
- Asp.Net连接ACCESS数据库相对路径问题 web.config中如何使用相对路径及在类文件中调用这个相对路径
- Asp.net的登录验证方法Web.config访问权限配置
- asp.net项目中通过Web.config配置文件及文件夹的访问权限!
- asp.net 如何让虚拟目录里面的webconfig不继承主目录config
- ASP.NET中业务对象访问web.config
- asp.net 如何让虚拟目录里面的webconfig不继承主目录config(转)
- 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作
- Asp.Net连接ACCESS数据库相对路径问题,web.config中如何使用相对路径及在类文件中调用这个相对路径