Normally SPAs are created using javascript libraries like React.
A detailed explanation on how this page works is available
here.
Basically the idea is to implement each page as a C# class possibly in a dll that provides the mark-up that is dropped into an <asp:literal>
Invented Here is very out of fashion at the moment and whilst I don't think that most businesses need to copy Google and create Go or
Facebook and create React, they also don't need to copy what they did, instead they should do what is right for their business.
When you have a big IT department it is
quite easy to use various technologies and not have to worry about staff having the necessary skills or configuring servers.
With small departments the
cost of extra languages and frameworks can be very high, training and familiarity take time,
only Fred understands that and he is off this week so can you make do with what
you have?
Because a lot of my background is with hardware makers
writing code rather than looking for it on the internet is normal for me. Just writing what you need is often better and cheaper for your business in the long term.
Pop onto StackExchange and see how many people are saying something like
I've spent two days on this problem, why doesn't it work and the answer is
You need to set property Version="2021"
even though you have 2022 because the dependency FredWhoHasLostInterest hasn't been updated and doesn't recognise 2022.
Or even worse the package
WeirdButWeNeedIt is still supported and they have decided that iPhone x.x is no longer supported and that is critical to you.
You may think that I am being silly on this but I am surprised just now many sites don't work with an iPhone 5. I don't mean some state of the art feature,
I mean something like a pop-up when you first visit the site which takes up the whole of the screen and you can't dismiss it or a menu that doesn't do
anything.
Obviously if you retain control you can do most of your pages in the most productive way and then handle any special cases the
best way for you;
We're going to hand code that page, create some special Javascript and call a WCF service.
C:\Users\ISA-192-0-0-14>ping IanSmithcse.co.uk
Pinging iansmithcse.co.uk [92.53.241.24] with 32 bytes of data:
Reply from 92.53.241.24: bytes=32 time=68ms TTL=114
Reply from 92.53.241.24: bytes=32 time=75ms TTL=114
Reply from 92.53.241.24: bytes=32 time=2382ms TTL=114
Reply from 92.53.241.24: bytes=32 time=736ms TTL=114
Ping statistics for 92.53.241.24:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 68ms, Maximum = 2382ms, Average = 815ms
C:\Users\ISA-192-0-0-14>