【发布时间】:2017-12-04 19:01:56
【问题描述】:
首先让我说我是 Core 2.0 和 MVC 的新手,所以请原谅我的无知
我已经使用网络表单多年,并且会使用 AJAX 来处理这个问题,但我很难找到 MVC 的答案。
我相信我遇到的问题是,当我单击页面上的按钮时,它正在做一个完整的帖子,而不是使用 Ajax 来部分发布。这有所不同的唯一原因是,在这个登录屏幕上,我的登录表单在页面加载时飞了下来。
<script type="text/javascript">
$().ready(function () {
setTimeout(function () { $('.card').removeClass('card-hidden'); }, 700)
});
</script>
如果用户输入了错误的信息,我必须显示错误,登录表单将再次从顶部飞入。
所以我的问题有两个。
对于初学者,有没有什么简单的方法可以阻止它在回发时浮动? 使用网络表单,我可以直接在后面的代码中访问 HTML,并在返回之前删除该类。 也许我可以做一些事情,比如向我的 ViewModel 添加一个状态,然后我可以在 Razer 中基于该状态切换类。
1234563有谁知道这方面的好资源吗?
回顾
- 使用 Asp.net Core 2.0 MVC
- 回发时触发 JQuery 就绪方法的问题
- 这会导致我的登录表单再次飞入
- 我是否必须像第 1 项那样破解 UI
- 我是否应该专注于 AJAX 以及根据我的需要什么是好的资源。
-
示例页面:http://demos.creative-tim.com/material-dashboard-pro/examples/pages/login.html
解决方案
首先非常感谢 David Lang 为我指明了正确的方向。在他的帖子和链接之间,我能够解决这个问题。
请注意,我的大部分问题都是由未正确安装的 nuget 包引起的。安装了 Microsoft 不显眼的 Ajax,但因为我没有名为 scripts 的文件夹,所以它从未将 JS 文件放在我的项目中。一旦我在我的项目中得到了这些,剩下的就变得容易了。
-
首先将 jQuery 脚本添加到您的页面。
<script src="~/js/jquery.unobtrusive-ajax.min.js"></script> -
添加最小表单标签
<form asp-action="CheckPassword" data-ajax="true" data-ajax-method="post" data-ajax-success="onSuccess" > -
在您的控制器中检查您的数据,在我的情况下返回一个 viewModel(不是视图)
[HttpPost] public ActionResult CheckPassword([Bind("userName, password")] LoginVM loginModel) { if (loginModel.userName == "somename" && loginModel.password == "1234") { loginModel.invalidUser = false; return Ok(loginModel); } else { loginModel.invalidUser = true; return Ok(loginModel); } } -
创建 JS 函数对返回的数据做一些事情。
var onSuccess = function (context) { var errorMessage = $("#errorMessage"); errorMessage.html(""); if (context.invalidUser) { errorMessage.html("Invalid Credentials"); } else { errorMessage.html("Valid user!"); } };
【问题讨论】:
标签: jquery asp.net ajax asp.net-core-mvc asp.net-core-2.0