使用$ http post service中的模型重定向到MVC视图

时间:2016-01-06 05:11:52

标签: c# angularjs asp.net-mvc http-post

你好,我实际上是MVC的新手,我遇到了问题。我到处尝试搜索,但问题仍然没有解决。

我正在使用$http帖子向MVC actionview发送模型。数据通过操作和视图成功发送,但是网址也没有重定向到目标视图,在我的情况下,我想发送模型以及重定向。(我可以在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重定向,但是当我想发送数据并呈现视图时,事情会变得复杂。谢谢!!

2 个答案:

答案 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中所述。