2010-12-01 15 views
1

私はAppSettings(web.config)の設定を持っているので、それらを外部のjavascriptファイルに渡す必要があります。AppSettingsを外部のjavascriptファイルに渡すとMVCのようになりますか?

ASP.NETでは、プレースホルダを設定値に置き換えるレスポンスにJavaScriptファイルを書き込むためのASHXハンドラを考えると思います。

ASP.NET MVCでより良い方法がありますか?ありがとうございました。

答えて

3

JsonResultで送信できますか?あなたのJSで

、あなたは特定のアクションにGET/POST要求を送信し、要求を持っている(のはGetAppSetting()それを呼びましょう、とそれに対応する値が応答で返されます。セキュリティ上の理由から

、Iと思いますしかし要求することができるものを制限するでしょう...

public JsonResult GetAppSetting(string id) 
{ 
    //You could check what's been requested here if you want to make sure you're only returning information that you may not wish to send. 
    string appSetting = AppSettings[id]; 

    if(string.IsNullOrEmpty(appSetting) == false) 
    { 
    return Json(appSetting, JsonRequestBehavior.AllowGet); 
    } 

    //Handle non-existent settings here... 
    throw new Exception("This setting does not exist"); 
} 

はまた、それはあなたが絶対に開発上の理由から、キー/値のちょうど特定のセットにこれを制限することができますコメントでクリスMarisicによって示唆されています。したがって、ここにその簡単な例があります...

public JsonResult GetAppSettings() 
{ 
    var appSettings = new Dictionary<string, string>(); 
    appSettings.Add("myAppSetting1", AppSettings["myAppSetting1"]); 
    appSettings.Add("myAppSetting2", AppSettings["myAppSetting2"]); 
    appSettings.Add("myAppSetting3", AppSettings["myAppSetting3"]); 

    return Json(appSettings, JsonRequestBehavior.AllowGet); 
} 

JsonResults(MVC 2のみ)のJsonRequestBehavior.AllowGetに注意してください。これは、デフォルトでは、ASP.NET MVC 2は、JsonResultを返すアクションに対してGETリクエストを許可しないためです。これを回避するには、JsonRequestBehaviourを追加することで回避できますが、この情報を取得してアクション内でこの動作を削除するには、投稿要求を行うことを検討する必要があります。

+1

あなたのアプローチを使ってアプリの設定を照会することはお勧めできません。デベロッパーの間違いの余地が残っています。私はちょうど 'GetSettings()'を持っていることをお勧めします。それは、公共の設定情報をすべて含むjsonオブジェクトを返すようにして、誤って情報を流出させる可能性は非常に低くなります。 –

+1

@Chris - 「開発者のエラー」で詳細を教えてください。あなたは単にそれをすべて送信すれば、誤って情報が漏れることはあまりありません! –

+0

ありがとうございました@ダン - これは私が探していたものです。 –

関連する問題