Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET MVC4 Razor项目中使用web.config文件中的值更新JavaScript?_Javascript_Asp.net_Asp.net Mvc - Fatal编程技术网

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

如何在ASP.NET MVC4 Razor项目中使用web.config文件中的值更新JavaScript?,javascript,asp.net,asp.net-mvc,Javascript,Asp.net,Asp.net Mvc,是否可以在ASP.NET MVC4 Razor项目的JavaScript文件中使用web.config设置,如下面的“serverPath” <appSettings> <add key="serverPath" value="http://myserver" /> </appSettings> 是否可以像从视图一样从web.config读取值并将其替换为.js文件?当然,在视图中使用此选项: @ConfigurationManager.AppSetti

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

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

是否可以像从视图一样从web.config读取值并将其替换为.js文件?

当然,在视图中使用此选项:

@ConfigurationManager.AppSettings["serverPath"]
<script type="text/javascript">
    getData('@ConfigurationManager.AppSettings["serverPath"]');
</script>
要传递到外部js文件,您需要函数具有一个参数,并通过视图调用它:

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

var request = $.ajax({
    url: '@(ConfigurationManager.AppSettings["serverPath"])',
    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'
  });

另一种方法是使用包含您的配置的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'
});

或者它的一些变体。

对于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>
@{
var apiBaseUrl=ConfigurationManager.AppSettings.Get(“apiBaseUrl”);
}
$(文档).ready(函数(){
var请求=$.ajax({
url:“@apiBaseUrl/cases”,
键入:“GET”,
cache:false,
数据类型:“json”
});
});

这是一个独立的JavaScript文件,链接到视图中,因此JavaScript不在视图中。我认为在.js文件中没有可访问的模型,但我不确定。在这种情况下,您将使用Linus的方法并将其传递到js文件中的方法:getData(“@Model.ServerPath”);由于JavaScript位于链接到视图的单独的.js文件中,因此它似乎无法正常工作。@ConfigurationManager。。。仍在呈现页面中。虽然这可以工作,但我希望将所有配置信息集中在web.config文件中,该文件能够自动为调试和发布模式选择不同的配置。为了允许为不同的配置模式选择不同的版本(调试/发布/等)您可以将web.config设置为“configurationFileName”,并将configuration.debug.js和configurationon.release.js作为appSetting的值进行切换。然后使用该值动态选择静态JS文件的路径。这当然是@Arkaine55的一个选项。对于我们的自动构建场景,我们配置了模板以生成正确的配置文件。但是,以某种方式获取文件的不同版本是有意义的:)这些答案对您有帮助吗?