将AppSettings传递给外部javascript文件的MVC方式?

时间:2010-12-01 16:49:05

标签: asp.net asp.net-mvc

我在AppSettings(web.config)中有设置,我需要将它们传递给外部javascript文件。

在ASP.NET中,我会想到一个ASHX处理程序,用于将javascript文件写入使用设置值替换占位符的响应。

在ASP.NET MVC中有更好的方法吗?谢谢。

1 个答案:

答案 0 :(得分:3)

您可以通过JsonResult发送它们吗?

在您的JS中,您有一个请求会向特定操作发送GET / POST请求(让我们称之为GetAppSetting(),并在响应。

出于安全原因,我会限制可以请求的内容......

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");
}

或者,Chris 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中的JsonRequestBehavior.AllowGet(仅限MVC 2)。这是因为,默认情况下,ASP.NET MVC 2不允许对返回JsonResult的操作发出GET个请求。您可以通过添加JsonRequestBehaviour来规避这一点,但我可能会提到您应该考虑执行发布请求以检索此信息,并在您的操作中删除此行为。