Используя сценарии на основной странице с ASP.NET MVC

Я согласен с 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; }
}
69
задан Marc Gravell 15 October 2009 в 05:09
поделиться

8 ответов

У меня есть класс 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") %>
45
ответ дан Eduardo Campañó 24 November 2019 в 13:50
поделиться

На основе других ответов, возможно, дополнительный метод на 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>";
}
20
ответ дан Marc Gravell 24 November 2019 в 13:50
поделиться

Почему не только указывают на Вашу основную страницу на js хостинг файлов Google ? Тогда, даже когда это приходит к развертыванию (принимающий Ваш сайт, Сеть стоит), можно ли злоупотребить, возможно предварительно кэшировал файлы jQuery?

10
ответ дан OJ. 24 November 2019 в 13:50
поделиться

Я сделал часть из того, что упоминает 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;)

4
ответ дан Eduardo Campañó 24 November 2019 в 13:50
поделиться

На работе мы делаем что-то вроде этого от кода 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.

1
ответ дан Leandro López 24 November 2019 в 13:50
поделиться

Я думаю, что самый простой способ - использовать следующее, и он работает в представлениях на.

<script type="text/javascript" src="<%=ResolveUrl("~/Scripts/myscript.js") %>">

</script>
36
ответ дан 24 November 2019 в 13:50
поделиться

ResolveUrl - самое элегантное решение IMO. Хотя очень жаль, что ссылки на CSS разрешаются по runat=server, а не по скрипту.

1
ответ дан 24 November 2019 в 13:50
поделиться

Наши приложения развертываются с использованием виртуальных каталогов, и у нас были некоторые проблемы с другими ответами, упомянутыми здесь (неправильное разрешение пути). Один из способов, который хорошо сработал (не единственный, конечно), заключается в следующем:

<script src="<%=Request.ApplicationPath%>/Web/AppName/JavaScript/jquery-1.4.1.js"></script>
0
ответ дан 24 November 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: