gpt4 book ai didi

angularjs - 我可以在 angularjs 模块配置方法中访问 MVC web.config 值吗?

转载 作者:行者123 更新时间:2023-12-02 17:52:08 26 4
gpt4 key购买 nike

如何将 MVC web.config 值传递给我的 Angular 模块配置方法?

我想使用 MVC web.config 中的参数设置 $logProvider.debugEnabled 值。这样,当我从开发转向测试再转向生产时,我就不必记住更改设置。

我有found a solution用于传递可从我的 Angular Controller 访问的参数,但我在配置方法中需要它们。

这是我的 app.js 中现在的内容

(function () {

var app = angular.module("myApp", ['configSettings']);

app.config('settings', [function (settings, $logProvider) {
var envr = settings.serverConfig;
if (!envr == "LOCAL") {
$logProvider.debugEnabled(false);
}
}]);

}());

提前致谢,

约翰

最佳答案

我为此使用自定义 http 处理程序:

public class JavascriptResourceHandler : IHttpHandler
{
#region IHttpHandler Members

public bool IsReusable
{
// Return false in case your Managed Handler cannot be reused for another request.
// Usually this would be false in case you have some state information preserved per request.
get { return true; }
}

public void ProcessRequest(HttpContext context)
{
var sb = new StringBuilder();
sb.Append("var js = {};");
sb.Append("js.settings = { ");

var settings = ConfigurationManager.AppSettings.AllKeys.Where(k => k.StartsWith("JS_")).ToList();

for (int i = 0; i < settings.Count; i++)
{
var key = settings[i];
var name = key.Replace("JS_", string.Empty);
var value = ConfigurationManager.AppSettings[key];
sb.Append(name);
sb.Append(":");
sb.Append("'");
sb.Append(HttpUtility.JavaScriptStringEncode(value));
sb.Append("'");
if (i != settings.Count - 1)
sb.Append(",");
}

sb.Append("};");

context.Response.Clear();
context.Response.ContentType = "text/javascript";
context.Response.Write(sb.ToString());
}

#endregion
}

然后将此处理程序添加到<system.webServer><handlers>中:

<add name="JavascriptResourceHandler" verb="GET" path="JavascriptResourceHandler.axd" type="MyNamespace.JavascriptResourceHandler, MyAssembly, Version=1.0.*, Culture=neutral" />

从 html 引用此内容:

 <script src="~/JavascriptResourceHandler.axd"></script>

然后使用配置值的 JS_ 前缀将它们传播到 JavaScript(这是出于安全原因,因为我们通常不希望将所有应用程序设置传播到客户端代码):

<add key="JS_Key" value="MyConfigValue" />

配置值将在 JavaScript 中可用:

var myValue = js.settings.Key; // the JS_ prefix will be automatically removed

你的例子:

(function () {

var app = angular.module("myApp", ['configSettings']);

app.config('settings', [function (settings, $logProvider) {
var envr = js.settings.serverAppSettingsKeyWithoutJSPrefix;
if (!envr == "LOCAL") {
$logProvider.debugEnabled(false);
}
}]);

}());

关于angularjs - 我可以在 angularjs 模块配置方法中访问 MVC web.config 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26106311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com