之前,我将ASP.NET MVC5与Jquery 3.3.1一起使用,我在脚本标记内的视图的同一页面上发布了该文章,它工作得很好。但是我听说最好在外部jsfile中使用您的函数。
该帖子用于获取简单的数据数组并填充数据表。
我的jsfile上的其他函数运行良好,但我的帖子返回了一个未找到的404,我在JsonAction上设置了一个断点,但帖子甚至没有调用它。
对不起,我的英语不好
这是我的POST功能:
var url = '@Url.Action("GetCardsData","Card")';
$.post(url).done(function (data) {
var request = JSON.parse(data);
var i = 0;
var exist = false;
request.filter(function (el) {
el.filter(function (ul) {
array[i] = ul;
i++;
})
});
我的JsonAction:
public JsonResult GetCardsData(string CardNumber) {
if (CardNumber == null) {
CardNumber = "";
}
int? Reference_ID = User.Reference_ID;
Card c = CardRepo.GetCard(Company.Company_ID, CardNumber);
new AdmSql();
var cardListq = @"SELECT * FROM [DEF].[GetCardsData] ({0}, 3)";
var cardList = DEFRepo.ParseList(DaSql.Query(cardListq, Reference_ID));
var data = JsonConvert.SerializeObject(cardList);
return Json(data);
}
答案 0 :(得分:2)
您的var url = '@Url.Action("GetCardsData","Card")';
代码很可能位于.js文件中。它不应该在那里,因为Razor无法在此处检测到它,所以您的网址最终看起来仍然是原来的样子,所以404(未找到)是因为没有@Url.Action("GetCardsData","Card")
,而是有/Card/GetCardsData
。因此,请将此行放入.cshtml
页面的内部,如下所示:
<script>
var url = '@Url.Action("GetCardsData","Card")';
</script>
现在,您的网址将是正确的。
答案 1 :(得分:0)
问题在于' @ Url.Action '在外部 JS文件中不起作用。只能从.cshtml或.vbhtml文件中调用它。
但是,如果您仍然想通过外部JS文件进行调用,则只需在网址中传递'/Card/GetCardsData'
。