Я пытаюсь вызвать скрипт jquery из asp:MenuItem NavigateUrl

#javascript #jquery #asp.net

#javascript #jquery #asp.net

Вопрос:

фрагмент из моего интерфейса aspx

 asp:MenuItem NavigateUrl = "~/Scripts/toggleit.js" 

toggleit.js:

$(document).ready(function () {

   $('#Div52').toggle();

});
 

Когда я запускаю menuitem, появляется несколько окон с вопросом, безопасно ли запускать этот скрипт? (не знаю, почему это не было бы в моем проекте …)

затем он выдает странную ошибку

'document' is undefined line 1

зачем давать методу NavigateUrl возможность запускать «Скрипты», если вы не можете запускать скрипты jquery?

Комментарии:

1. в комплекте вы знаете .net?

2. Вы можете вызвать функцию в NavigateUrl , но не в js-файле.

3. хороший ответ, но не решение, как я могу переключить видимость тега div с помощью MenuItem, если вы говорите, что не можете что-то сделать, тогда как мне это сделать?

Ответ №1:

Обычно вы используете javascript:myFunctionName(); теги привязки, но я не думаю, что это будет работать из пункта меню ASP. У меня есть неэлегантное решение.

Подключите событие щелчка в меню навигации к этой функции

 public void NavigationMenu_Click(object sender, MenuEventArgs e)
{
    if (e.Item.Value == "SelfReport")
    {
        // call RegisterClientStartupScript(); http://msdn.microsoft.com/en-us/library/z9h4dk8y(v=vs.110).aspx
    }
}
 

Будет обратная отправка.

Лучшим решением было бы подключить событие на стороне jQuery на основе заголовка пункта меню. Но я оставлю этот ответ тому, кто лучше разбирается в jQuery, чем я.

Комментарии:

1. хорошо, попробовал это, но теперь, как мне сделать так, чтобы тег div на моей странице Default.aspx стал видимым, функция находится на странице site.master.vb?

2. Вы должны пометить свой вопрос как VB.NET если вы используете этот язык. Ваши страницы контента будут объединены с вашей главной страницей при рендеринге клиенту. Итак, RegisterClientStartupScript() вы просто вызываете свою функцию JavaScript. Когда обратная передача завершится, функция JavaScript будет выполнена.