如何在ASP.NET MVC4 Razor项目中使用web.config文件中的值更新JavaScript?
是否可以在ASP.NET MVC4 Razor项目的JavaScript文件中使用web.config设置,如下面的“serverPath”如何在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
<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的一个选项。对于我们的自动构建场景,我们配置了模板以生成正确的配置文件。但是,以某种方式获取文件的不同版本是有意义的:)这些答案对您有帮助吗?