Во-первых, я уверен, что у меня отсутствует лучший способ навигации и загрузки частичных представлений. Итак, если я собираюсь сделать это не так, пожалуйста, дайте мне знать. У меня такое чувство, что я делаю это сложнее, чем нужно.
То, что я пытаюсь выполнить, заключается в том, что мой веб-сайт ведет себя как одностраничное приложение. Для этого у меня есть много частичных представлений в div. Я скрываю все div, но активен. Я не уверен, как запускать код в частичном представлении только тогда, когда он отображается.
Вот представление div и partial, которое меня интересует в этом сценарии (это в Index.cshtml):
<div id="app">
@Html.Partial("~/Views/PartialViews/App.cshtml")
</div>
И это JavaScript, который показывает, что частичный вид (также в Index.cshtml):
function showApp(id) {
hideAll();
$('#txtAppId').val(id); // This is how I'm passing data to the partial view
$('#app').show();
}
Это хорошо работает (по крайней мере, пока показывает частичное представление), но как я могу получить код в App.cshtml для запуска только тогда, когда он показан так?
В App.cshtml (частичное представление):
<script>
$(function() {
// Note: This will execute as soon as the main page is loaded. I don't want
// code to execute right away, but only when this view is shown.
});
function doSomething() {
// Only when this view is shown do I want code to execute here.
}
</script>
Как я doSomething()
выполнить doSomething()
когда отображается частичное представление?
Вызовите функцию после отображения частичного представления в index.cshtml
function showApp(id) {
hideAll();
$('#txtAppId').val(id); // This is how I'm passing data to the partial view
$('#app').show();
doSomething(); //Here invoke it.
}
Вы не можете напрямую обнаружить, когда элемент меняет видимость и запускает какой-то скрипт, здесь вы можете контролировать, когда он становится видимым, поэтому вызовите метод, как только вы сделаете его видимым.