![](/img/trans.png)
[英]calling controller method using jquery but method not redirecting to its corresponding view
[英]Calling controller, but not redirecting to another view immediately
我正在使用 ASP.NET Core。
我想为我的应用程序添加简单的登录功能。
所以我有表格来填写密码和登录名以及提交数据的按钮。
提交数据时,我创建了 HTTP POST 请求,该请求在我的控制器中调用适当的方法。 控制器的结果是另一个视图,用户被重定向到该视图(基于登录结果)。
我想要做的是:调用控制器只是为了检查登录是否成功,基于该结果,而不重定向到其他页面,我想显示一些关于登录成功的弹出窗口,然后重定向到适当的视图。
我能想到的是两次调用控制器:第一次用于登录验证,第二次用于重定向。 这是正确的方法吗? 或者有什么更好的方法吗?
我想到的另一种方法是在显示弹出窗口后使用 JavaScript 创建 HTTP 请求。
关于您的场景,最好的方法是使用AJAX
将您的表单数据发送到Controller
方法,并根据您的Controller
方法的响应,对您的View
执行适当的操作。 一个非常简单的例子是:
示例视图:
<table class="table table-striped">
<tr>
<td>Username: </td>
<td><input type="text" class="form-control" id="username" required></td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" class="form-control" id="userpassword" required></td>
</tr>
</table>
<div class="box-footer">
<button type="button" class="btn btn-primary" onclick="AuthenticateUser()">Submit</button>
</div>
<script>
function AuthenticateUser() {
var username= $("#username").val();
var password= $("#userpassword").val();
var json = {
username: username,
password: password,
};
$.ajax({
type: "post",
dataType: "json",
data: {"json": JSON.stringify(json)},,
url: "@Url.Action("AuthenticateUser","Home")",
success: function (data) {
if(data.status=="true")
{
var urlToRedirect= '@Url.Action("RedirectMethod","Home")';
window.location.href = urlToRedirect; //Redirect here
}
else if(data.status=="false")
{
alert(data.msg)
}
},
error:function(err){
console.log(err);
}
});
}
</script>
示例Controller
方法:
using System.Web.Script.Serialization;
[HttpPost]
public ActionResult AuthenticateUser(string json)
{
var serializer = new JavaScriptSerializer();
dynamic jsondata = serializer.Deserialize(json, typeof(object));
//Get your variables here from AJAX call
var username= jsondata["username"];
var password= jsondata["password"];
bool result=db.Authenticate(username,password) //Can be API call or DB call
if(bool)
{
return Json(new {status="true", msg= "successful authentication"}, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new {status="false", msg= "Incorrect credentials given"}, JsonRequestBehavior.AllowGet);
}
}
希望这可以帮助你。
您可以尝试根据用户的成功/不成功登录,通过控制器方法返回一个布尔值。 然后您可以使用此结果显示弹出窗口,然后从该弹出窗口重定向用户。 从 JavaScript 创建 HTTP 请求也是一个不错的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.