【发布时间】:2019-03-27 17:34:39
【问题描述】:
我有一个 ASP.NET Core 应用程序 (.NET Core 2.1)。它是在 Visual Studio 2017 15.9.4 中创建的。
我为获得 AJAX 所做的每一次尝试似乎都失败了,并且 jquery 不显眼的验证内容也不起作用。在下面的_Layout.cshtml 文件中,导航栏<a asp-controller="Home" asp-action="DoSomething" data-ajax="true" data-ajax-method="POST">Do Something</a> 中有一个链接,我一直在尝试使用该链接。该方法被完全忽略,它总是作为 GET 发送,它会执行完整的回发并导航到 Home/DoSomething,我认为它不应该这样做。控制器方法当前只返回Json(true)。我也没有看到任何 javascript 错误。有人知道我错过了什么吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>My App</title>
<link rel="stylesheet" href="~/lib/kendo-ui/styles/kendo.common.min.css" />
<link rel="stylesheet" href="~/lib/kendo-ui/styles/kendo.metro.min.css" />
<link rel="stylesheet" href="~/lib/kendo-ui/styles/kendo.metro.mobile.min.css" />
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
<environment exclude="Development">
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.17.0/jquery.validate.min.js"
asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator"
crossorigin="anonymous"
integrity="sha384-rZfj/ogBloos6wzLGpPkkOr/gpkBNLZ6b6yLy4o+ok+t/SAKlL5mvXLr0OXNi1Hp">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.9/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
crossorigin="anonymous"
integrity="sha384-ifv0TYDWxBHzvAk2Z0n8R434FL1Rlv/Av18DXE43N/1rvHyOG4izKst0f2iSLdds">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
<script src="~/lib/kendo-ui/js/kendo.all.min.js"></script>
<script src="~/lib/kendo-ui/js/kendo.aspnetmvc.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#my-app-navbar-collapse" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a asp-controller="Home" asp-action="Index" class="navbar-brand">@ViewData["Title"]</a>
</div>
<div class="collapse navbar-collapse" id="my-app-navbar-collapse">
<ul class="nav navbar-nav">
<li><a asp-controller="Home" asp-action="DoSomething" data-ajax="true" data-ajax-method="POST">Do Something</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid body-content">
@RenderBody()
<hr />
<footer>
<p>© 2019 - Me</p>
</footer>
</div>
@RenderSection("Scripts", required: false)
</body>
</html>
【问题讨论】:
-
你的意思是点击链接时不能调用到DoSomething方法的post请求吗?你是用浏览器的开发者工具F12检查有没有报错吗?
-
@XueliChen 开发工具控制台中没有错误。问题是当我认为它不应该用于 ajax 调用时,它总是在做回发。
标签: asp.net-core asp.net-core-mvc