2015-10-20 67 views
0

在我的DataTables中,我想避免重复并在web.config文件中保留基地址。然后,我只需要连接可变部分。下面是我从没有成功的浏览器和消息(IE 11)完成:DataTables - 如何避免硬编码url?

“的DataTable警告:表ID = configurationTable - 阿贾克斯的错误......”

的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

你得到什么错误? (按照此获取错误代码/说明:http://datatables.net/manual/tech-notes/7) –

+0

尝试将其更改为“'url':url,'。没有必要添加单引号。 –

+0

@AlexArt ...在Chrome浏览器中显示406 - 不可接受 –

回答

1

您不应将URL包装在单引号中。

而且我不是ASP.NET专家,但据this answer你的代码应改为:

$(document).ready(function() { 
    var url = '<%= ConfigurationManager.AppSettings["BaseAddress"] %>' + 'Configuration'; 
    $('#configurationTable').DataTable({ 
     ajax: { 
      'url': url, 
      'dataSrc': 'value' 
     }, 
     // ... skipped ... 
    } 
}); 
+0

我也试过了,没有运气 - 同样的错误。这是一个406 - 不可接受 –

+0

@BigDaddy,可能有一些其他问题与导致它的URL无关。只要您看到对正确URL的请求,就意味着使用了<%= ConfigurationManager.AppSettings [“BaseAddress”]%>'的解决方案就可以工作。 –

+0

你说得对。我的路由在我拨打的OData服务上很差 –

0

当你使用MVC,我假设你的JS文件是分开的,即不包含在视图中。如果是这种情况,则使用Razor语法访问该值将不起作用。

试试这个:

在您发送到视图模型,添加属性的web.config中设置:

public string BaseAddress 
{ 
    get { return ConfigurationManager.AppSettings["BaseAddress"]; } 
} 

这样,当你的模型传递给视图,它总是具有BaseAddress值。在查看您添加一个隐藏字段:

@Html.HiddenFor(x => x.BaseAddress, new { id = "baseaddress" }) 

而且你的数据表初始化JS代码可以检索:

url: $("#baseaddress").val() + '/Configuration'; 
+0

谢谢,请参阅我的更新2评论。 –