在我的DataTables中,我想避免重复并将基地址保存在web.config文件中。然后,我只需要连接变量部分。这是我没有成功的事情以及来自浏览器的消息(IE 11):
“DataTables警告:表id = configurationTable - Ajax错误......”
使用Javascript:
$(document).ready(function () {
var url = @Html.Raw(Json.Encode(ConfigurationManager.AppSettings["BaseAddress"])) + "Configuration";
$('#configurationTable').DataTable({
ajax: {
'url': "'" + url + "'", //url is concatenated correctly
'dataSrc': 'value',
},...edited for brevity
配置设置:
<add key="BaseAddress" value="http://myServer:8083/api/"/>
更新: 我也试过这个,但没有在引号中加上 url 。 Chrome显示406错误 - 无法接受
更新2: 我正在调用的Web API服务有OdataControllers和ApiControllers。两者的前缀相同,因此需要首先在WebApiConfig中配置OData。另外,url参数没有引号。
答案 0 :(得分:1)
您不应将URL包装在单引号中。
此外,我不是ASP.NET专家,但根据this answer,您的代码应更改为:
$(document).ready(function () {
var url = '<%= ConfigurationManager.AppSettings["BaseAddress"] %>' + 'Configuration';
$('#configurationTable').DataTable({
ajax: {
'url': url,
'dataSrc': 'value'
},
// ... skipped ...
}
});
答案 1 :(得分:0)
当您使用MVC时,我假设您的js文件是独立的,即未包含在视图中。如果是这种情况,那么使用Razor
语法访问该值将无法正常工作。
试试这个:
在发送给View的模型中,为web.config设置添加属性:
public string BaseAddress
{
get { return ConfigurationManager.AppSettings["BaseAddress"]; }
}
这样,当您将模型传递给视图时,它始终具有BaseAddress
值。在视图中添加隐藏字段:
@Html.HiddenFor(x => x.BaseAddress, new { id = "baseaddress" })
您的数据表初始化js代码可以检索它:
url: $("#baseaddress").val() + '/Configuration';