根据Appsetting更改Telerik网格列

时间:2011-04-21 20:19:42

标签: grid telerik-mvc configurationmanager

我有一个Html.Telerik()。Grid()绑定到我的MVC视图中的模型。我希望它根据web.config中appsettings中的值返回一个链接。基本上,如果这是开发服务器然后显示链接但不在生产服务器上,这可能吗?我使用Ajax绑定,我的绑定列如下所示:

columns.Bound(f => f.TechnicalKey)
       .ClientTemplate("<# if (FileName != 'status.txt' && StatusText=='PROCESSED') { #><a href='/AType/DownloadAFile/<#= TechnicalKey #>'>Download</a> <# } else { #>Not available<# } #>")
       .Title("").Filterable(false);

我希望status.txt成为开发链接而不是生产链接(现在就是这样)

谢谢。 千斤顶

2 个答案:

答案 0 :(得分:0)

您需要根据应用程序的部署事实以不同的方式设置客户端模板:

if (/* some check to see if on production which is specific to your implementation */) {
columns.Bound(f => f.TechnicalKey)
       .ClientTemplate("<# if (FileName != 'status.txt' && StatusText=='PROCESSED') { #>Download <# } else { #>Not available<# } #>")
       .Title("").Filterable(false);

} else {
columns.Bound(f => f.TechnicalKey)
       .ClientTemplate("<# if (FileName != 'status.txt' && StatusText=='PROCESSED') { #><a href='/AType/DownloadAFile/<#= TechnicalKey #>'>Download</a> <# } else { #>Not available<# } #>")
       .Title("").Filterable(false);
}

答案 1 :(得分:0)

我实际上通过在域对象中添加属性来实现此目的,如下所示:

    public bool isProduction
    {
      get
      {
        return ConfigurationManager.AppSettings["ActivationURL"].Contains("production");
      }
    }

然后在我看来:

    .Columns(columns =>
                  {
                    columns.Bound(f => f.TechnicalKey)
                      .Template(f => { %>
                                          <% if (f.StatusText == "PROCESSED")
                                              {
                                                if (!f.isProduction || f.FileName != "status.txt")
                                                {                          
                                                  %><a href="/AType/DownloadAFile/<%= f.TechnicalKey %>">Download</a><%
                                                }
                                                else
                                                {
                                                  %>Not available<%
                                                }                                
                                              }
                                              else
                                              {
                                                %>Not available<%
                                              } 
                                            %>
                                    <% })
                      .ClientTemplate("<# if (StatusText=='PROCESSED') { if(!isProduction || FileName!='status.txt') { #><a href='/AType/DownloadAFile/<#= TechnicalKey #>'>Download</a> <# } else { #>Not available<# }} else { #>Not available<# } #>").Encoded(false).Title("").Filterable(false);

这样我就可以满足初始服务器绑定数据和后来的Ajax绑定数据。