I have a bunch of javascript functions which depend on some server-side constants (such as strings from my resources file). While I was developing them I kept the javascript code in the view header, so I could simply used server-side tags inside my javascript code, but now I’d like to move the javascript functions to a separate file.
I can’t use a regular js file since that would not be interpreted by the server, making the server tags embedded there useless. I don’t want to define variables in the page either since that seems way to awkward and error-prone.
What I’ve done instead is to create a new aspx file, put the javascript functions there and include that aspx file instead of a regular js file in my master template. It seems a bit unorthodox, but it seems to work fine.
Is there any downside to my approach that I have not taken into account? Or any better (less obscure) method?
Edit Bonus question: Should I use a DOCTYPE inside the included scripts file? After all, the scripts file is included by a script tag already. I tried to mimic regular js files, so I did not specify any DOCTYPE.
Using a view, with MVC’s templating capabilities is a great way to accomplish this. It is easy to maintain, well understood and gets the job done fast. The only real trick is to get it to serve the correct content-type. Doing something like this:
Actually gets you text/html content type. The trick is to make sure you get the last word, add this to your controller:
And you will get the correct content type; ViewResult seems to force it to go text/html.