如何解决ASP.NET Core-如何将Java变量从View传递到Controller
我在Javascript函数中有一个变量,该变量要发送给控制器以激活指定的方法。
这是视图中javascript函数的代码:
var email = response.email; //String with an email address
$.ajax({
type: "POST",url: '@Url.Action("Login","UsersController")',dataType: "html",data: { data: email },success: function (data) {
alert('Your data updated');
return data;
},error: function (jqXHR,textStatus) {
alert(textStatus);
}
});
这是我要在控制器中激活的方法:
[HttpPost]
public IActionResult Login(string email)
{
var user = _context.User.FirstOrDefault(u => u.Email == email);
if (user != null)
{
SignIn(user);
return RedirectToAction("Index","Home");
}
return View("Login","Users");
}
每次运行此命令时,都会收到错误警报,我对Ajax还是很陌生,所以我不确定如何处理它。 谢谢。
解决方法
首先,在ajax的url中指定的控制器名称需要删除控制器,即将UsersController更改为Users 。
然后在传递的参数数据中,将{data:email} to {email:email}
更改,或将“登录”操作收到的参数名称从email to data
更改为,以确保传递的参数名称与接收的参数名称一致。
如果要警告更新信息,然后跳转到对应视图,则需要将“登录”操作中的其他信息返回给成功方法,然后判断成功方法中的数据,然后跳转。
$.ajax({
type: "POST",url: '@Url.Action("Login","Users")',dataType: "html",data: { email: email },success: function (data) {
if (data == "Success") {
alert('Your data updated');
window.location.href = "/Home/Index";
} else {
alert("Please enter correct email!");
}
},error: function (jqXHR,textStatus) {
alert(textStatus);
}
});
动作:
[HttpPost]
public IActionResult Login(string email)
{
var user = _context.User.FirstOrDefault(u => u.Email == email);
if (user != null)
{
SignIn(user);
return Content("Success");
}
return Content("Wrong");
}
以下是测试结果:( gif中的代码是一种简化的判断。)
,由于您在控制器中的参数名称被命名为email
,因此您也应该在要发送的对象中命名属性email
。因此您的ajax调用应该是
$.ajax({
type: "POST","UsersController")',//<-- here
success: function (data) {
alert('Your data updated');
return data;
},textStatus) {
alert(textStatus);
}
});
这将使$.ajax()
在请求正文中发送一个类似email=foo@bar.com
的字符串,MVC可以解析该字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。