我在RazorJS
应用程序中使用MVC4
来使用Razor语法" @"在Js文件中。
//代码:
@Html.RazorJSInclude("~/Scripts/Application/Transactions.js")
<button id="btnSearch" name="submit" type="button" onclick="Loadgrid();">Search</button>
&#34; Transaction.js&#34;有&#34; LoadGrid&#34; mehtod里面。当我使用我的Transaction.js作为上面的代码时,它会抛出错误&#34;没有找到这样的方法(Loadgrid)&#34;。
浏览器中呈现的HTML显示为,
<SCRIPT src="/razorjs.axd?fn=/Scripts/Application/Transactions.js" type="text/javascript"></SCRIPT>
当我尝试使用这样的时候,
<script src="~/Scripts/Application/Transactions.js"></script>
@Html.RazorJSInclude("~/Scripts/Application/Transactions.js")
浏览器接受js文件,但js文件中的ajax
调用未被调用,并将以下异常作为警报抛出。
IIS 8.0 Detailed Error-404.15-Not Found
有一些HTML内容。
// js文件中的代码
function Loadgrid() {
$.ajax({
url: '@Url.Action("LoadColumns", "Home")',
data: { 'workflowId': '5' },
datatype: 'json',
type: 'GET',
cache: false,
success: OnComplete,
error: function (xhr, status, error) {
alert(xhr.statusText);
window.location.href = '@Url.Action("LogOut", "Account")';
}
});
}
//控制器:
public ActionResult LoadColumns(string workflowId)
{
return Content("Success");
}
加载列方法没有被击中。我哪里错了?
FYI,
在像url: '/Home/LoadColumns'
这样的ajax调用中使用url时,代码运行得非常好,但仅限于本地机器而不是服务器(dev中的主机)。
RazorJS版本 0.4.3
答案 0 :(得分:1)
您在ajax调用中指定了datatype: 'json'
,但您的控制器操作return Content("Success");
其中内容将是纯文本且不允许,更改为return Json(new { foo = "bar", baz = "Blech" }, JsonRequestBehavior.AllowGet)
,然后,您说你的脚本中的ajax调用没有被调用,然后你说你检索了一个警报,这个警告:
alert(xhr.statusText);
所以你的函数按预期调用。不要使用警报进行调试,请尝试:
console.log(error);
您首选的开发人员工具的网络标签也可以提供更好的工作,然后提醒。
Here you can find a simple working example来完成你的任务:
<强> \视图\主页\ Index.cshtml 强>
@Html.RazorJSInclude("~/Scripts/App/TestRazorJS.js")
<button id="btnSearch" name="submit" type="button" onclick="LoadFromRazor()">Search</button>
<强> \脚本\应用\ TestRazorJS.js 强>
function LoadFromRazor() {
$.ajax({
url: '@Url.Action("Test", "Home")',
datatype: 'json',
type: 'GET',
cache: false,
success: function () { console.log('done'); },
error: function (xhr, status, error) {
console.log(status);
}
});
}
<强> \控制器\ HomeController.cs 强>
public ActionResult Test()
{
return Json(new { foo = "bar", baz = "Blech" }, JsonRequestBehavior.AllowGet);
}
它按预期工作。