Ответы:
Если вы создаете одностраничное приложение (SPA) , то вам, вероятно, не нужен «MVC» в ASP.NET MVC . Представления, особенно динамические, скорее всего доставляются / обрабатываются на стороне клиента. Угловые ручки, которые просто отлично.
Но, может быть, вы не хотите 100% SPA. Тогда что? Представьте вместо 10 страниц, но 10 страниц, которые оченьдинамичный. После того, как пользователь войдет в систему, в правом углу появится небольшой значок пользователя. Это не динамично. Это просто показывает несколько изящных вещей, таких как «оценка» пользователя и его последнее селфи. Вы кэшируете изящные вещи, чтобы их можно было легко найти. Теперь вы можете пойти двумя путями с этим. Если вы являетесь клиентом MVC на стороне клиента, вы просто извлекаете данные значка после доставки начальной полезной нагрузки HTML, как и все остальные данные. Но, возможно, вы не пурист. Может быть, вы противоположны пуристу. Может быть, ты империалист. Таким образом, вместо предоставления исходного HTML-кода, предоставления некоторого JavaScript-кода, который будет отправляться обратно на ваш сервер, отправлять сообщения через JavaScript для получения данных значка, а затем в конечном итоге объединить эти данные в представление через MVC на стороне клиента,это как ваш начальный HTML. После того, как ваш исходный HTML-код доставлен, вы приступаете к типичным действиям MVC на стороне клиента.
Итак ... MVC на сервере и на клиенте - это просто удобный способ организации кода, который в 2001 году был беспорядком. Вам не нужно выбирать один или другой. Вы можете выбрать оба. Конечно, чем больше вы делаете после того, как этот исходный HTML доставлен, тем меньше вам нужен серверный MVC. Тем не менее, это для вас, если вам это нужно. Например, я работал над приложением ASP.NET MVC / Angular, где внешние шаблоны Angular могли бы быть .NET MVC ActionResult. Это означает, что ваш серверный контроллер может объединять данные в своем представлении, передавать их в Angular в качестве шаблона, и контроллер Angular может затем объединять свои данные в представлении. Я не говорю, что это хорошая идея, но она просто показывает, что одна форма MVC не делает другую устаревшей.
Кроме того, независимо от того, как вы развернете Angular, вам понадобится способ доставить этот исходный HTML, шаблоны и, самое главное, данные. Почему бы не использовать платформу, которая делает это легко? Их много, но .NET MVC - не сутулость. Как я уже сказал, вы можете сделать исходные HTML и внешние шаблоны Angular результатом действия MVC, но, что еще лучше, вы можете использовать .NET Web API для доставки данных. Веб-API так же вкусен, как и абрикосовый компот.
Подводя итог: MVC это просто шаблон. Вы можете использовать этот шаблон на любом количестве физических уровней. Это не может быть использовано. Используйте это свободно, если это имеет смысл. Кроме того, Angular в любом случае не может быть MVC (так говорят люди, которые заботятся об этих вещах), поэтому не стесняйтесь использовать его с инструментом, в названии которого есть «MVC». Черт, даже если это MVC, смешивай и подбирай по желанию.
ASP.NET MVC - это серверная структура; не важно, какие библиотеки JavaScript вы используете. AngularJS - это клиентская библиотека, которой не важно, какая серверная технология используется для веб-сайта - это может быть Python, ASP.NET MVC или даже простая старая связка статических HTML-файлов, хранящихся непосредственно на диске.
ASP.NET MVC и AngularJS совместимы, и существует множество проектов, которые используют их вместе.
Вам нужно использовать оба? На самом деле, нет. Это полностью зависит от потребностей вашего проекта.
Если ваш сайт динамический, вы должны использовать некоторые сценарии на стороне сервера. Вы можете использовать ASP.NET, и тот факт, что вы используете AngularJS, не сделает ваш серверный код более MVC. Если вы хотите иметь возможность структурировать свое серверное приложение как MVC, вам лучше выбрать ASP.NET MVC.
Точно так же тот факт, что вы используете ASP.NET MVC, ничего не говорит о структуре вашего клиентского кода. Вы можете поместить весь свой JavaScript в один файл, не задумываясь о структуре, и быть довольным этим (пока проект не начнет расти). Здесь опять AngularJS представляет собой способ структурировать ваше приложение на стороне клиента.
Примечание: вы отметили свой вопрос ASP.NET MVC 3. Если это не устаревший проект, который вы должны поддерживать, или если у вас есть определенные ограничения при размещении приложения на устаревших серверах, которые не обновлялись в течение последних четырех лет, вы можете использовать ASP .NET MVC 4 или 5 вместо.
Если вы используете Visual Studio, есть новый шаблон веб-сайта MVC «одностраничное приложение», который включает в себя контроллеры Angular и MVC Web Api.
Это хорошо работает, потому что ваш код MVC на стороне сервера предоставляет конечные точки json для вызова углового кода на стороне клиента.
Кроме того, вы можете использовать контроллеры MVC для обслуживания основного представления HTML или представлений для вашего одностраничного приложения. это дает вам возможность генерации на стороне сервера, авторизации, перенаправления, обработки ошибок и т. д.
Часто вам понадобится небольшое количество сгенерированного сервером html / javascript даже в одностраничном приложении, такие как URL-адреса конечных точек для разных сред, на разных языках или даже нечетная страница аутентификации, которая может быть проще для серверной стороны.
Спустя 3 года используйте ASP.NET Web API для обработки ваших данных и Angular (js или новее) для структурирования вашего приложения на стороне клиента. Если вы делаете статический сайт, тогда просто используйте ASP.NET MVC.