如何使用来自web的值更新JavaScript.配置文件.NET MVC4 Razor项目

How to update JavaScript with a value from web.config file in an ASP.NET MVC4 Razor project?

本文关键字:配置文件 JavaScript NET MVC4 项目 Razor 更新 何使用 web      更新时间:2023-09-26

是否可以使用web。配置设置,如"serverPath"下面的JavaScript文件中的ASP。NET MVC4 Razor项目?

<appSettings>
  <add key="serverPath" value="http://myserver" />
</appSettings>

我想根据调试或发布模式更改以下jQuery ajax调用的URL

  var request = $.ajax({
    url: 'http://myserver/api/cases',
    type: 'GET',
    cache: false,
    dataType: 'json'
  });

可以从web中读取值。配置像一个视图和替换它在.js文件?

另一种选择是有一个js文件,其中包含您的配置,以web的方式。.net网站的配置:

configuration.js:

var configuration = {
    apiurl: 'http://myserver/api/',
    someOtherSetting: 'my-value'
};

嗯,你可以把这个配置以javascript的形式写进你的页面,或者链接到脚本,或者合并并缩小到一个公共文件。它将成为你部署过程的一部分。

然后像使用任何js对象一样使用它:

var request = $.ajax({
    url: configuration.apiurl,
    type: 'GET',
    cache: false,
    dataType: 'json'
});

理想情况下,您将读取控制器中的值:

var serverPath = ConfigurationManager.AppSettings.Get("serverPath");

然后用该值设置视图模型的属性

myViewModel.ServerPath = serverPath;
return View(myViewModel);

然后在视图中将其输入JS:

var request = $.ajax({
    url: '@(Model.ServerPath)',
    type: 'GET',
    cache: false,
    dataType: 'json'
  });

当然,在你的视图中使用:

@ConfigurationManager.AppSettings["serverPath"]

为了传递到外部js文件,你需要你的函数有一个参数,并通过你的视图调用它:

<script type="text/javascript">
    getData('@ConfigurationManager.AppSettings["serverPath"]');
</script>

当你的js文件有这样的内容:

function getData(path) {
    var request = $.ajax({
        url: path,
        type: 'GET',
        cache: false,
        dataType: 'json'
    });
    return request;
}

试试这个:

var request = $.ajax({
    url: '@(ConfigurationManager.AppSettings["serverPath"])',
    type: 'GET',
    cache: false,
    dataType: 'json'
  });

您可以为ASP这样做。NET MVC4 Razor:

@{
    var apiBaseUrl = ConfigurationManager.AppSettings.Get("ApiBaseUrl");
}
<script type="text/javascript">
    $(document).ready(function() {
      var request = $.ajax({
          url: '@apiBaseUrl/cases',
          type: 'GET',
          cache: false,
          dataType: 'json'
      });
    });
</script>