Как достигается модульность поведения в ASP.NET MVC?

Имею богатый опыт разработки desktop приложений на C# и высоко ценю прелести ООП подхода.
Производственная необходимость требует добавить достаточно сложную(для меня) форму в имеющееся asp.net mvc приложение на, пока малопонятной, комбинации html+js.
Сложность состоит в том чтобы отобразить список заранее неизвестных элементов, которые в бекенде являются классами наследующими общий базовый абстрактный класс. Элементы могут отличаться достаточно существенно и городить огород на все случаи жизни на основной странице с проверкой типа элемента списка и куском логики отвечающей за генерацию отображения очень не хотелось и в итоге сделал на основе ParitalView зависящего от типа элемента.
Но если с отображением, что то приемлемое получилось, то как инкапсулировать поведение описанное на JS в каждый отдельный элемент я понять так и не смог.
Итого:
Чтобы все элементы снабдить поведением, приходиться складывать весь JS код на общей странице.
Есть ли способ поместить JS код в индивидуальный PartialView ?
Возможно я вообще подхожу к вопросу с неправильной стороны, и прошу ткнуть носом где описано как реализуются подобные вещи.

Приложение написано на asp.net mvc 3, aspx, jQuery

Спасибо.
  • Вопрос задан
  • 403 просмотра
Решения вопроса 1
kamilgarey
@kamilgarey
Чтобы все элементы снабдить поведением, приходиться складывать весь JS код на общей странице.

И это правильно с точки зрения FrontEnd. Иначе придётся по кусочкам собирать JS код разбросанный там и сям.

Если же вы хотите ООП - это реализуется языком программирования а не языком вёрстки.
Поэтому вам нужен JS отвечающий за своё отображение, а не HTML которому нужен JS.
Вам, возможно, стоит посмотреть в сторону JS библиотек ( и фраймворков) : Angular, Ember, Knockout, Backbone и прочих
Но это хорошее решение вопроса. Для него надо достаточно хорошо знать JS.
Плюс, Использование какой-либо из перечисленных библиотек кажется слишком тяжеловесным для одной лишь формы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы