на двоих; у вас всегда должна быть проверка на стороне сервера, а также на стороне клиента
на три; если бы вы могли найти способ манипулировать БД на стороне клиента, это было бы впечатляющим;)
Я не знаю, как работает ASP.net, поэтому я говорю исключительно из своего опыта PHP.
Я бы написал элементы управления в паре с кодом сервера и клиента. Каждому элементу управления нужна форма, логика на стороне клиента и логика на стороне сервера. Форма написана вашим движком шаблонов, логика на стороне клиента присоединена к форме и написана на JS, а логика на стороне сервера - это пара контроллер / действие где-то, которая манипулирует моделью. Очевидно, что вы не захотите связывать свою клиентскую логику с определенным действием / контроллером, поэтому обязательно определите интерфейс, который можно использовать вместо того, чтобы общаться с вашим элементом управления ...
Тогда для каждой формы я написал бы класс в javascript, который создает ваши элементы управления. Например; у вас может быть элемент управления:
{include file = "list_view.php" id = "ListView1" data = $Data.List}
, который распечатал бы вашу форму. Тогда в вашей странице контроллера класса:
this.ListView1 = new ListViewController({id : "ListView1", serverCtrl : "Users"});
Теперь вы можете использовать this.ListView1 для управления представлением списка. Контроллер представления списка делает то же, что и AJAX-запросы на новые страницы, если пользователь нажимает кнопку следующей страницы, а также обрабатывает столбцы и сортировку (которая также делегирует серверу).