是否可以将ASp.NET标记放在我的javascript中,该javascript位于单独的脚本文件中。例如,我有以下
$.getJSON("/Postcode/GetAddressResults/" + $get("SearchPostcode").value, null, function(data) {
我想转入,但它不喜欢ASP标签!
var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("SearchPostcode").value
$.getJSON(action, null, function(data) {
然而,这似乎不起作用,我做错了什么?
答案 0 :(得分:1)
在主页面上添加一个元标记,用于保存来自主机的当前应用程序路径的值(〜代表的位)。
在您的Javascript中创建一个函数,该函数将使用元标记内容解析〜前缀路径。
修改强>
请求的示例: -
将此代码放在母版页的头部: -
<meta id="meta.AppDomainAppVirtualPath"
name="AppDomainAppVirtualPath" value="<%=HttpRuntime.AppDomainAppVirtualPath%>" />
在您的javascript中包含此功能: -
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;
}
}
现在你的代码行是: -
$.getJSON(resolveUrl("~/Postcode/GetAddressResults/") + $get("SearchPostcode").value, null, function(data) {
答案 1 :(得分:0)
如果您的JavaScript位于单独的脚本文件中,则ASP.NET不会处理它,因此不会处理这些标记。您需要在ASP.NET页面中内联它们才能使其正常工作。
答案 2 :(得分:0)
不,你不能。 您可以在视图中将路径公开给javascript,但不能直接在外部javascript文件中公开。
@David M. 内联整个事情并非真正需要,你可以内联动态部分并将其他部分硬编码。
问候,彼得