你好,我实际上是MVC
的新手,我遇到了问题。我到处尝试搜索,但问题仍然没有解决。
我正在使用$http
帖子向MVC action
和view
发送模型。数据通过操作和视图成功发送,但是网址也没有重定向到目标视图,在我的情况下,我想发送模型以及重定向。(我可以在windows.location.href="success"
后执行重定向{ {1}}但我无法发送模型数据)
以下是我的示例尝试。(此处我提供的用户名为" $http.success
,"密码为" random
"我是将样本数据(名称)发送到成功视图。
JS
randPassword
C#动作
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
}
}
var data = $.param({
UserName: $scope.user.username,
Password: $scope.user.password,
});
$http.post('Login', data, config).success(function (data, status, headers, config) {
}).then(function () {
console.log(data);
});
我的成功观点是简单的观点,只取得了成功。调试将继续查看断点,但没有重定向。我可以在成功后使用js重定向,但是当我想发送数据并呈现视图时,事情会变得复杂。谢谢!!
答案 0 :(得分:0)
控件是使用ajax调用,因此重定向实际上是从服务器端发生的,并在javascript中返回给ajax调用者。 尝试从页面提交表单,重定向将在浏览器上发生。
答案 1 :(得分:-1)
由于这是你正在进行的ajax调用,你应该从你的action方法返回一个json响应。
[HttpPost]
[AllowAnonymous]
public ActionResult Login(LoginModel usr)
{
if (usr.UserName=="random"&&usr.Password=="randPassword")
{
// do whatever you have to do
return Json(new { status="success"});
}
else
{
return Json(new { status="error" ,error= "UserName or Password is Wrong"});
}
}
在$ http.post调用的then
事件中,检查回复的响应并进行重定向。
var loginUrl="@Url.Action("Login","Account")";
$http.post(loginUrl, data, config).then(function(res){
if(res.data.status==="success")
{
window.location.href="@Url.Action("Success","Account")";
}
else
{
alert(res.data.error);
}
});
上面的javacript代码假定您在剃刀视图中使用它并使用Url.Action
辅助方法生成action方法的相对url。如果您的角度代码位于单独的javascript文件中,您可以将该网址从剃须刀视图传递到应用根,并使用它来构建您的操作方法的网址,如this answer中所述。