2013-08-19 2 views
0

в приложении ASP.NET MVC, в котором я сейчас работаю, есть несколько мест на одной странице, которую пользователь может щелкнуть. Таким образом, есть главное меню, которое находится в _layout, и для каждой отдельной страницы могут быть ссылки, связанные с этой страницей. Я пытаюсь использовать загрузчик, который будет отображаться на каждом клике, в основном, когда ответ требует времени, но на данный момент это для каждого щелчка. Например, на главной странице в главном меню пользователь может щелкнуть «Студенты», и загрузчик должен появиться и скрыть, когда страница загрузится полностью. На странице студентов может быть вызов ajax, который получает данные и связывает их с сеткой. Итак, с момента нажатия пользователем на ссылку меню и загрузки страницы загрузчик активен/показан. Он скрыт, когда страница загружается полностью. Сетка может иметь функции редактирования, и когда пользователь нажимает на любую из ссылок CRUD, загрузчик должен показывать и скрывать.Как использовать/обрабатывать загрузчик в приложении MVC?

Я рассматриваю предложения по выполнению этого требования. Если я могу подключиться к любому из событий MVC, это было бы круто, так как я хочу меньше данных Javascript/jQuery, но если Javascript/jQuery - это то, что хорошо.

В настоящее время у меня нет ничего такого, чтобы ценители были оценены.

ответ

0

Предполагая, что AJAX используется

Я не вижу способ держать эту сторону сервера без средней страницы с переадресацией используется (что было бы просто ненужные навороты). И, поскольку вы не против, вы можете реализовать это довольно легко, используя jQuery и что-то вроде blockUI.

Я позволю вам играть с уточнением привязки только к ссылкам, о которых вы заботитесь, но пока мы будем считать все ссылки. Кроме того, MVC должен использовать JQuery для вещей, как Ajax.Actionlink, чтобы мы могли угнать события как $.ajaxStart и $.ajaxStop:

function showLoadingScreen(enabled){ 
    return enabled ? $.blockUI() : $.unblockUI(); 
} 
$(document).ajaxStart(function(){ 
    showLoadingScreen(true); 
}).ajaxStop(function(){ 
    showLoadingScreen(false); 
}); 

Позже вы можете, возможно, применить классы к ссылкам, которые вам небезразличны и просто связываться с ними (вместо $.ajaxStart), но я оставлю это до вас.