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)
嗯,这显然是不正确的。
任何人都知道我在做什么错了?
答
您不能在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);
});
是Razor视图或外部JavaScript中get调用? – Shyju 2012-07-24 21:22:55
external javascript – AnonyMouse 2012-07-24 21:28:10
然后看我的答案。 – Shyju 2012-07-24 21:28:58