ASP.NET MVC包括Javascript中的ASP

时间:2009-03-30 15:06:55

标签: javascript asp.net-mvc

是否可以将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) {

然而,这似乎不起作用,我做错了什么?

3 个答案:

答案 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. 内联整个事情并非真正需要,你可以内联动态部分并将其他部分硬编码。

问候,彼得