Reputation: 1080
Is it possible to put ASp.NET tags in my javascript which is in a seperate script file. For example, I have the following
$.getJSON("/Postcode/GetAddressResults/" + $get("SearchPostcode").value, null, function(data) {
which I want to turn into but it does not like the ASP tags!
var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("SearchPostcode").value
$.getJSON(action, null, function(data) {
However this does not seem to work, what am I doing wrong?
Upvotes: 3
Views: 849
Reputation: 189555
Add to your master page(s) a meta tag to hold the value of the current applications path from the host (the bit the ~ represents).
In your Javascript create a function which will resolve a ~ prefixed path using the meta tag content.
Edit
Example as requested:-
Place this code in the head section your master pages:-
<meta id="meta.AppDomainAppVirtualPath"
name="AppDomainAppVirtualPath" value="<%=HttpRuntime.AppDomainAppVirtualPath%>" />
In your javascript include this function:-
function resolveUrl(url)
{
if (url.charAt(0) == "~")
{
if (!resolveUrl.appPath)
{
var meta = document.getElementById('meta.AppDomainAppVirtualPath');
resolveUrl.appPath = meta ? meta .getAttribute("content") : '/';
}
if (resolveUrl.appPath == '/')
return url.slice(1, url.length;
else
return resolveUrl.appPath + url.slice(1, url.length);
}
else
{
return url;
}
}
Now your line of code is:-
$.getJSON(resolveUrl("~/Postcode/GetAddressResults/") + $get("SearchPostcode").value, null, function(data) {
Upvotes: 1
Reputation: 49
No, you can`t. You can expose a path within your view to javascript, but not directly in your external javascript file.
@David M Inlining the whole thing is not really neccesary, you can inline the dynamic part and leave the other part hardcoded.
Regards, Peter
Upvotes: 0
Reputation: 72930
If your JavaScript is in a separate script file, then it won't be processed by ASP.NET, so these tags won't be processed. You'll need them inline in an ASP.NET page for this to work.
Upvotes: 0