Установка атрибута OnLoad тела на главной странице Asp.net MVC

У меня есть представление с использованием главной страницы, содержащей некоторый javascript, который необходимо выполнить с помощью OnLoad Body. Как лучше всего установить OnLoad на моей MasterPage только для определенных представлений?

По идее, я пытался передать имя функции javascript как ViewData. Но я действительно не хочу, чтобы мои контроллеры знали о javascript на странице. Мне такой подход очень не нравится ...

<body onload = "<%=ViewData["Body_OnLoad"]%>">
<asp:ContentPlaceHolder ID = "MainContent" runat = "server" />

Изменить - я полагаю, что одна из идей - использовать вместо этого событие готовности документа jQuery ...

Есть другие идеи?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
20 697
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

В любом случае вам определенно следует использовать jQuery или другой фреймворк JavaScript.

Пусть ваши контроллеры передают вашим представлениям какой-то индикатор состояния, но не специфичные для представлений вещи, такие как имена функций JavaScript. Сопоставление индикаторов состояния с именами функций JavaScript зависит от ваших представлений.

Ответ принят как подходящий

Я использовал следующий шаблон со своим текущим проектом MVC, и, похоже, он пока неплохо работает для моей работы с .js ...

На своей главной странице я загружаю свои стандартные файлы сценариев, которые хочу использовать на всех моих страницах с контентом (например, jquery.js, global.js, jquery-plugins, файлы .css и т. д.). Затем я определяю все необходимые события на моей главной странице (onLoad, onSave и т. д.). Каждая страница содержимого, которую я создаю, будет иметь свой собственный файл .js, связанный с ней, и я загружаю этот файл сценария на страницу содержимого .aspx. Любые события .js, которые необходимо реализовать по-разному между страницами содержимого, обрабатываются в отдельном файле содержимого .js. Так что в основном моя главная страница имеет набор функций .js, которые будут реализовывать мои сценарии страницы содержимого. Прямо сейчас я просто сохраняю эти сигнатуры функций шаблона .js в файле, копирую и вставляю их в каждый новый файл content.js, который мне нужно создать. Тем не менее, я думаю о создании генератора кода или инструмента, который будет выдавать эти сигнатуры шаблонов для меня в любом новом файле .js, который мне нужен (если .js имеет некоторую форму интерфейса или функции наследования, дайте мне знать).

Итак, чтобы резюмировать:

MasterPage.Master Загружает: jquery.js, global.js, plugins.js

ContentPage Loads: ContentPage.js

Global.js содержит функции, вызываемые главной страницей, которые не меняются между страницами содержимого, наряду с любыми другими глобальными обычными функциями.

Каждый ContentPage.js реализует свои собственные функции для страницы содержимого вместе с теми функциями, которые вызывает главная страница и которые имеют различное поведение.

Спасибо за ваше предложение. Я просто могу поиграться с этой идеей. Если вы когда-нибудь создадите инструмент или генератор, обязательно разместите его здесь!

Vyrotek 16.10.2008 20:27

Теперь, когда JQuery официально является частью ASP.NET MVC, я бы рекомендовал его использовать. Он небольшой и добавляет значимости вашему приложению.

Я бы порекомендовал добавить версию JQuery Мустафы, в которую включены комментарии Intellisense:

jquery-1.2.6-intellisense.js

Затем добавьте его в папку Scripts (новое в MVC Beta 1) и укажите в нем ссылку следующим образом:

<script language = "javascript" type = "text/javascript" src = "../../Scripts/jquery-1.2.6-intellisense.js"></script> 

Теперь вы можете добавить в свой код такую ​​функцию:

$(document).ready(function() {
   // do stuff when DOM is ready
});

Поскольку вы упомянули, что хотите, чтобы это происходило только в определенных представлениях, вы можете добавить заполнитель на своей главной странице следующим образом:

<asp:contentplaceholder id = "JavascriptPlaceholder" runat = "server"></asp:contentplaceholder>  

Затем в вашем представлении вы можете выбрать, вставлять ли туда код или нет.

который войдет в раздел головы

Решение из блога: Использование body onload с ASP.net 2.0 MasterPages

MasterPage.master

<head>
<asp:ContentPlaceHolder runat = "server" id = "Headers">
</asp:ContentPlaceHolder>
<script language=javascript>
   function mp_onload() {
     if (window.body_onload != null)
     window.body_onload();
   }
</script>
</head>
<body onload = "mp_onload();">

Default.aspx

<asp:Content ID = "Content2" ContentPlaceHolderID = "Headers" Runat = "Server">
<script language = "javascript">
   function body_onload()
   {
       //do something
   }
</script>
</asp:Content>
 

Другие вопросы по теме