MVC jQuery的获得不是非硬编码的工作得到

问题描述:

我有一个MVC应用程序,它具有在其家庭控制器与方法调用getResult:MVC jQuery的获得不是非硬编码的工作得到

public int GetResult() 
     { 
      return 3; 
     } 

我使用调用它的JavaScript文件:

$.post('/Home/GetResult', null, function (data) { 

     alert(data); 

    }); 

它工作正常。

但是我试图用调用它

$.get('@Url.Action("GetResult", "Home")', null, function (data) { 

     alert(data); 

    }); 

它不工作我得到一个500 errir的无hardcorded方式。

它试图去的网址:

http://localhost:xx/Home/@Url.Action(%22GetResult%22,%20%%22Home%22) 

嗯,这显然是不正确的。

任何人都知道我在做什么错了?

+1

是Razor视图或外部JavaScript中get调用? – Shyju 2012-07-24 21:22:55

+0

external javascript – AnonyMouse 2012-07-24 21:28:10

+0

然后看我的答案。 – Shyju 2012-07-24 21:28:58

您不能在JavaScript文件中使用Razor语法。 Razor是一个服务器端脚本构造,需要通过ASP.Net解析才能正常工作。

你有两个选择:

方案一:

移动脚本到.cshtml视图文件。

方案二:

创建一个接受URL作为PARAM一个JavaScript函数,从视图调用它:

function foo(posturl){ 
    $.post(url, null, function (data) { 
     alert(data); 
    }); 
} 

/* View */ 
foo('@Url.Action("GetResult", "Home")'); 

它适用于刀片意见only.If要访问它在一个exteranl javascript文件上,您可以在剃刀视图中使用HTML Helper方法获取路径名,并将其保存在全局Java脚本变量中,并在您的View,012中访问外部JavaScript文件

<script type="text/javascript> 
    var globalGetResultPath='@Url.ACtion("GetResult","Home)'; 
</script> 

和外部脚本现在你可以调用像

$.get(globalGetResultPath, function (data) { 
    alert(data); 
});