Jawaban:
Jika Anda membuat aplikasi halaman tunggal (SPA) , maka Anda mungkin tidak memerlukan "MVC" di ASP.NET MVC . Tampilan, terutama tampilan dinamis, kemungkinan disampaikan / dimanipulasi sisi klien. Menangani sudut itu baik-baik saja.
Tapi mungkin Anda tidak ingin SPA 100%. Lalu apa? Bayangkan saja 10 halaman, tetapi 10 halaman yang sangatdinamis. Setelah pengguna masuk, ada lencana pengguna kecil di sudut kanan. Itu tidak dinamis. Itu hanya menunjukkan beberapa hal bagus seperti "skor" pengguna dan selfie terbaru mereka. Anda men-cache hal-hal bagus sehingga mereka dapat dengan mudah diambil. Sekarang, Anda bisa menggunakan dua cara dengan ini. Jika Anda seorang purist MVC sisi klien, Anda hanya mengambil data badge setelah payload HTML awal dikirim, sama seperti semua data lainnya. Tapi mungkin Anda bukan purist. Mungkin Anda kebalikan dari purist. Mungkin Anda seorang yang tidak senonoh. Jadi, alih-alih mengirimkan HTML awal, mengirimkan beberapa JavaScript yang akan dikirim kembali ke server Anda, memposting melalui JavaScript untuk mengambil data lencana, dan kemudian pada akhirnya menggabungkan data itu ke dalam tampilan melalui MVC sisi klien,itu sebagai HTML awal Anda. Setelah HTML awal Anda dikirimkan, Anda melanjutkan dengan tipikal MVC sisi klien Anda.
Jadi ... MVC di server dan di klien hanyalah cara mudah untuk mengatur kode yang dulu berantakan pada tahun 2001. Anda tidak harus memilih satu atau yang lainnya. Anda bisa memilih keduanya. Memang, semakin banyak yang Anda lakukan setelah HTML awal dikirim, semakin sedikit Anda membutuhkan MVC sisi server. Tetap, itu ada untuk Anda jika Anda membutuhkannya. Sebagai contoh, saya bekerja pada aplikasi ASP.NET MVC / Angular di mana templat Angular eksternal sebenarnya .NET MVC ActionResult. Itu berarti pengontrol server Anda dapat menggabungkan data ke dalam tampilan, mengirimkannya ke Angular sebagai templat, dan pengontrol Angular kemudian dapat menggabungkan data ke dalam tampilan. Saya tidak mengatakan ini adalah ide yang baik, tetapi itu hanya menunjukkan bahwa satu bentuk MVC tidak membuat yang lain usang.
Selain itu, tidak masalah bagaimana Anda menggunakan Angular, Anda akan memerlukan cara untuk mengirimkan HTML awal, templat, dan yang paling penting data. Mengapa tidak menggunakan platform yang membuatnya mudah? Ada banyak, tetapi .NET MVC tidak bungkuk. Seperti yang saya katakan, Anda dapat membuat HTML awal dan templat Angular eksternal hasil dari tindakan MVC, tetapi lebih baik lagi, Anda dapat menggunakan .NET Web API untuk mengirimkan data. API Web sama lezatnya dengan kompot aprikot.
Ringkas: MVC hanyalah sebuah pola. Anda mungkin ingin menggunakan pola itu pada sejumlah lapisan fisik. Itu tidak bisa digunakan. Gunakan secara bebas jika itu masuk akal. Selain itu, Angular mungkin bukan MVC (begitu kata orang yang peduli tentang hal-hal ini), jadi jangan ragu untuk menggunakannya dengan alat yang memiliki "MVC" dalam namanya. Sial, bahkan jika itu adalah MVC, campur dan cocokkan seperti yang diinginkan.
ASP.NET MVC adalah kerangka kerja sisi server; tidak peduli apa perpustakaan JavaScript yang Anda gunakan. AngularJS adalah pustaka sisi-klien, yang tidak peduli teknologi apa yang mendukung sisi-server situs web-itu bisa Python, ASP.NET MVC, atau bahkan sekelompok tua file statis HTML yang disimpan langsung pada disk.
ASP.NET MVC dan AngularJS keduanya kompatibel, dan ada banyak proyek di luar sana yang menggunakannya bersama-sama.
Apakah Anda perlu menggunakan keduanya? Tidak juga. Itu sepenuhnya tergantung pada kebutuhan proyek Anda.
Jika situs web Anda dinamis, Anda harus menggunakan beberapa skrip sisi server. Anda bisa menggunakan ASP.NET, dan fakta bahwa Anda menggunakan AngularJS tidak akan membuat kode sisi server Anda lebih banyak MVC. Jika Anda ingin dapat menyusun aplikasi sisi server Anda sebagai MVC, Anda lebih suka memilih ASP.NET MVC.
Demikian pula, fakta bahwa Anda menggunakan ASP.NET MVC tidak menyiratkan apa pun tentang struktur kode sisi klien Anda. Anda dapat meletakkan semua JavaScript Anda dalam satu file tanpa memikirkan strukturnya dan senang dengan itu (sampai proyek mulai tumbuh). Sekali lagi, AngularJS menghadirkan dirinya sebagai cara untuk menyusun aplikasi Anda di sisi klien.
Catatan tambahan: Anda menandai pertanyaan Anda ASP.NET MVC 3. Kecuali jika ini adalah proyek lawas yang harus Anda pertahankan atau Anda memiliki kendala spesifik saat hosting aplikasi pada server lama yang tidak diperbarui selama empat tahun terakhir, Anda dapat menggunakan ASP .NET MVC 4 atau 5 sebagai gantinya.
Jika Anda menggunakan visual studio ada template situs web MVC 'aplikasi satu halaman' baru yang mencakup pengontrol angular dan MVC Web Api.
Ini bekerja dengan baik karena kode sisi server MVC Anda menyediakan titik akhir json untuk memanggil kode sisi klien.
Selain itu, Anda dapat menggunakan pengontrol MVC untuk menyajikan tampilan html dasar atau tampilan untuk aplikasi satu halaman Anda. ini memberi Anda kekuatan generasi sisi server, otorisasi, arahan ulang, penanganan kesalahan dll
Seringkali Anda akan menginginkan sejumlah kecil server yang dihasilkan html / javascript bahkan pada aplikasi halaman tunggal, hal-hal seperti url endpoint untuk lingkungan yang berbeda, bahasa yang berbeda, atau bahkan halaman otentikasi ganjil yang mungkin lebih mudah dilakukan dari sisi server.
3 tahun kemudian, gunakan ASP.NET Web API untuk menyajikan data dan Angular Anda (js atau yang lebih baru) untuk menyusun aplikasi Anda di sisi klien. Jika Anda membuat situs statis maka gunakan saja ASP.NET MVC.