2013-03-20 11 views
5

Bir ASP.NET MVC4 Razor projesinde bir JavaScript dosyasında "serverPath" gibi bir web.config ayarı kullanmak mümkün mü?JavaScript, ASP.NET MVC4 Razor projesinde web.config dosyasından bir değerle nasıl güncellenir?

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

Ben

var request = $.ajax({ 
    url: 'http://myserver/api/cases', 
    type: 'GET', 
    cache: false, 
    dataType: 'json' 
    }); 

mi modu ayıklama bağlı aşağıdaki jQuery ajax arama URL'sini değiştirmek veya kaldırmak istediğiniz bir View gibi web.config değerini okuyup değiştirmek mümkündür .js dosyasında?

+0

cevapların hiçbirinde yardımcı oldu mu? –

cevap

5

Bir alternatif, bir js dosyasına sahip olmaktır. nel bilgiler bulunuyor web.config bir .net web sitesi için yaptığı şekilde yapılandırma:

configuration.js:

var configuration = { 
    apiurl: 'http://myserver/api/', 
    someOtherSetting: 'my-value' 
}; 

Eh, komut dosyasında javascript veya bağlantısı olarak sayfanızdaki bu yapılandırmayı yazabilirsiniz ya veya ortak bir dosyaya birleştirin ve küçültün. Dağıtım sürecinizin bir parçası olacaktı.

Sonra seçerek diğer js nesne olarak kullanın:

var request = $.ajax({ 
    url: configuration.apiurl, 
    type: 'GET', 
    cache: false, 
    dataType: 'json' 
}); 

Ya da bir çeşidi biçimindedir.

+0

Bu işe yararken, tüm yapılandırma bilgilerimi otomatik olarak hata ayıklama ve serbest bırakma modları için farklı yapılandırmalara sahip olabilen web.config dosyasında merkezlemeyi tercih ederim. – ChrisP

+0

Farklı konfigürasyon modları (debug/release/etc) için farklı bir versiyon seçmeye izin vermek için "configurationDosyaAdı" adlı bir web.config ayarına sahip olabilirsiniz ve configuration.debug.js ve configuraiton.release.js değerleri arasında geçiş yapabilirsiniz. appSetting'in. Daha sonra statik JS dosyasının yolunu dinamik olarak seçmek için değeri kullanın. – Arkaine55

+0

Bu kesinlikle bir seçenek @ Arkaine55. Otomatik yapı senaryomuz için doğru yapılandırma dosyasını üretecek şekilde yapılandırılmış şablonlara sahibiz. Bu, bir şekilde * dosyanın farklı sürümlerine bir şekilde olsun anlam ifade eder :) –

1

Tabii, senin görünümünde bu kullanın:

@ConfigurationManager.AppSettings["serverPath"] 

harici js geçerek için dosya Eğer bir parametre var ve görünümü sayesinde onu aramak için işlevini gerekir:

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

function getData(path) { 
    var request = $.ajax({ 
     url: path, 
     type: 'GET', 
     cache: false, 
     dataType: 'json' 
    }); 

    return request; 
} 
0

bu deneyin:

sizin js dosyası böyle bir şey vardır
var request = $.ajax({ 
    url: '@(ConfigurationManager.AppSettings["serverPath"])', 
    type: 'GET', 
    cache: false, 
    dataType: 'json' 
    }); 
+0

JavaScript, görünümüne bağlı ayrı bir .js dosyasında olduğundan, bu çalışma görünmez. @ConfigurationManager ... hala işlenen sayfada. – ChrisP

1

İdeali, denetleyici değeri okurdum:

var serverPath = ConfigurationManager.AppSettings.Get("serverPath"); 

Sonra bu değeri

myViewModel.ServerPath = serverPath; 
return View(myViewModel); 

ile Ve görünümü sadece JS içine yem görünüm modelin özelliğini ayarlayın:

var request = $.ajax({ 
    url: '@(Model.ServerPath)', 
    type: 'GET', 
    cache: false, 
    dataType: 'json' 
    }); 
+0

Bu, JavaScript'in görünümde olmaması için Görünüm'e bağlanan bağımsız bir JavaScript dosyasıdır. Ben .js dosyasında bir Modle erişilebilir olduğunu sanmıyorum, ama emin değilim. – ChrisP

+0

Bu durumda, Linus'un yaklaşımını kullanır ve JS dosyanızda bulunan bir yönteme aktarırsınız:

0

Sen ASP.NET MVC4 Razor için bu şekilde bunu yapabilir:

@{ 
    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> 
İlgili konular