Make sure you have set the dlls in visual studio as "copy local to false" in their properties to avoid errors as given in the following official Sitecore documentation :
Also, make sure your controller is having a parameterless constructor like below
If incase your site crashes - you dont have any solution/fixes and you don't have backup, you can still find the entire folders and files of a vanilla Sitecore instance inside the installation zip file (Sitecore 9.3.0 rev. 003498 (OnPrem)_single.scwdp.zip/Content/Website). You need not install a new Sitecore instance again.. :)
Specifically, set the copy local to false for System.Web.Mvc.dll besides the regular dlls such as Sitecore.Kernel, Sitecore.Mvc, Sitecore.Mvc.Analytics
Basically, if it is a dll version mismatch after deploy/publish to your webroot folder, then you would get error message such as
Could not load file or assembly 'System.Web.Mvc'...