Я согласен с Icarus (мог бы прокомментировать, если бы мог), но вместо использования класса CustomObject я бы использовал словарь (в случае, если Facebook добавит что-то).
private class MyFacebookClass
{
public IList<IDictionary<string, string>> data { get; set; }
}
или
private class MyFacebookClass
{
public IList<IDictionary<string, object>> data { get; set; }
}
У меня есть класс AppHelper с некоторыми методами для добавления ссылок сценария:
public static string ReferenceScript(string scriptFile)
{
var filePath = VirtualPathUtility.ToAbsolute("~/Scripts/" + scriptFile);
return "<script type=\"text/javascript\" src=\"" + filePath + "\"></script>";
}
так на Вашей основной странице можно использовать:
<%= AppHelper.ReferenceScript("jquery-1.2.6.js") %>
На основе других ответов, возможно, дополнительный метод на HTML (который очень характерен для MVC), подобен ответу Eduardo:
<%=Html.Script("~/Scripts/jquery-1.2.6.js")%>
С:
public static string Script(this HtmlHelper html, string path)
{
var filePath = VirtualPathUtility.ToAbsolute(path);
return "<script type=\"text/javascript\" src=\"" + filePath + "\"></script>";
}
Почему не только указывают на Вашу основную страницу на js хостинг файлов Google ? Тогда, даже когда это приходит к развертыванию (принимающий Ваш сайт, Сеть стоит), можно ли злоупотребить, возможно предварительно кэшировал файлы jQuery?
Я сделал часть из того, что упоминает OJ, я создал класс GoogleHelper с этим методы
public static string ReferenceGoogleAPI()
{
var appSettings = new AppSettingsReader();
string apiKey = appSettings.GetValue("GoogleApiKey", typeof(string)).ToString();
return ReferenceGoogleAPI(apiKey);
}
public static string ReferenceGoogleAPI(string key)
{
return "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi?key=" + key + "\"></script>";
}
public static string ReferenceGoogleLibrary(string name, string version)
{
return "<script type=\"text/javascript\">google.load(\"" + name + "\", \"" + version + "\");</script>";
}
Теперь, я добавляю дополнительные методы для получения некоторых данных ClientLocation;)
На работе мы делаем что-то вроде этого от кода ASP позади:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Const jQuery As String = "jQuery"
With Me.Page.ClientScript
If Not .IsClientScriptIncludeRegistered(jQuery) Then
.RegisterClientScriptInclude(jQuery, VirtualPathUtility.ToAbsolute("~/Includes/jQuery-1.2.6.js"))
End If
End With
End Sub
я не знаю, возможно ли сделать это с ASP.NET MVC.
Я думаю, что самый простой способ - использовать следующее, и он работает в представлениях на.
<script type="text/javascript" src="<%=ResolveUrl("~/Scripts/myscript.js") %>">
</script>
ResolveUrl - самое элегантное решение IMO. Хотя очень жаль, что ссылки на CSS разрешаются по runat=server, а не по скрипту.
Наши приложения развертываются с использованием виртуальных каталогов, и у нас были некоторые проблемы с другими ответами, упомянутыми здесь (неправильное разрешение пути). Один из способов, который хорошо сработал (не единственный, конечно), заключается в следующем:
<script src="<%=Request.ApplicationPath%>/Web/AppName/JavaScript/jquery-1.4.1.js"></script>