如何使用ASP.NET MVC4 Razor项目中的web.config文件中的值更新JavaScript?

时间:2013-03-20 16:16:08

标签: javascript asp.net asp.net-mvc

是否可以在ASP.NET MVC4 Razor项目的JavaScript文件中使用web.config设置,例如“serverPath”?

<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.config读取值并将其替换为.js文件?

5 个答案:

答案 0 :(得分:5)

另一种方法是让一个js文件包含你的配置,就像web.config为.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'
});

或其中的一些变体。

答案 1 :(得分:1)

当然,请在您的视图中使用它:

@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;
}

答案 2 :(得分:1)

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

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'
  });

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

你可以用这种方式为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>