C# ASP.NET内核中通过表单的Ajax请求
因此,我知道我们可以使用$.ajax()执行ajax请求,但在ASP.NET Core中,我们应该能够使用标记帮助器通过表单本身轻松地发出ajax请求。我发现这个网站解释了怎么做 不过。当我提交表单时,它会重定向页面,而不仅仅是执行ajax请求 这就是我所做的:C# ASP.NET内核中通过表单的Ajax请求,c#,asp.net-core,C#,Asp.net Core,因此,我知道我们可以使用$.ajax()执行ajax请求,但在ASP.NET Core中,我们应该能够使用标记帮助器通过表单本身轻松地发出ajax请求。我发现这个网站解释了怎么做 不过。当我提交表单时,它会重定向页面,而不仅仅是执行ajax请求 这就是我所做的: 我创建了一个新的ASP.NET核心Web应用程序 挑选的MVC类型 通过NuGet添加了Microsoft.jQuery.Unobtrusive.Ajax包 添加了一个新的MVC控制器(Controllers/LoginControl
Views/Login/Index.cshtml:
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<form asp-controller="Login" asp-action="SaveForm"
data-ajax-begin="onBegin" data-ajax-complete="onComplete"
data-ajax-failure="onFailed" data-ajax-success="onSuccess"
data-ajax="true" data-ajax-method="POST">
<input type="submit" value="Save" class="btn btn-primary" />
</form>
<script>
var onBegin = function () {
alert("Begin");
};
var onComplete = function () {
alert("Complete");
};
var onSuccess = function(context){
alert(context);
};
var onFailed = function(context){
alert(context);
};
</script>
我在Views/Shared/_Layout.cshtml中更改的零件
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
</environment>
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/lib/jquery/dist/jquery.unobtrusive-ajax.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
(添加了两个jquery验证脚本)
我想在不刷新页面的情况下更新页面内容。例如,当用户试图使用不正确的凭据登录而不刷新整个页面时,显示错误消息
我对ASP.NET一点经验都没有,所以我可能错过了一些明显的东西
编辑:
值得指出的是,当页面重定向时,它会重定向到/Login/SaveForm,并显示正确的数据。您引用的
jquery.validate.unobtrusive.min.js
似乎不起作用。
我做了测试演示,效果很好。我使用的Microsoft.jQuery.Unobtrusive.Ajax是V3.2.6
我在_layout.cshtml中使用的jquery.unobtrusive-ajax脚本
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
</environment>
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/lib/jquery/dist/jquery.unobtrusive-ajax.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
您可以从下载
jquery.validate.unobtrusive.js
并将其添加到您的wwwroot/lib/jquery/dist将[HttpPost]
属性添加到您的SaveForm()
方法。@GaganDeep刚刚尝试过。很遗憾,这不起作用。请检查浏览器控制台在表单提交时是否有错误。@GaganDeep没有错误。只有200个回复。我添加了一些编辑,以便更清楚地了解当前发生的情况。您可以将onsuccess方法的名称更改为onsuccesscall或其他任何名称。我知道这个建议是有关联的,但如果我没记错的话,我也曾有过一次。这很有效!首先,我使用NuGet包完成了这项工作,并遵循了教程。我不得不添加两个脚本,但我猜这些脚本不能正常工作。下载你提供的文件解决了我的问题!