While razor made a great job in simplifying the html part of the code, there is still a lot we can do.
I) Exchanging the types to "var" or "function", maybe leaving the original types as a comment)
II) Having a client side library that will implement the server side framework (we can just have a limited version)
III) We can have a server side implementation of jquery and the like (might just need to be an interface or abstract class, or at least not implemented methods, since it is needed only for runtime), and to support jquery's $ symbol we might exchange it with something else such as "_"
IV) We can take this even further by allowing to pass to jquery a statically typed name (just as with the Html helpers) that might correspond to an ID in the main view (or it's master) or a class in the main view (or in a referenced style sheet), and we can even provide intellisense for it
V) We might also support view data and the model, and this will be resolved at runtime
VII) We can even go further and allow code to be written based on a condition by using the @syntax or a special function, however it will have to be in a limited way so that we can check the semantics of the code by being able to predict all paths of the server side generated code (and for example we will not be able to support a loop, instead the user will have to write a function, and have non-server-side-specific code to loop the function, but write this loop in a server-side if, and in the loop declaration he might be able to use the model to give the condition)
We can use c# compile time "if" mechanism to provide server side conditions, and they can be based on a specific view data property that should be set in the controller