Url.Action正在调用Controller但不返回视图

时间:2014-12-15 08:56:17

标签: asp.net-mvc-4

视图中的按钮事件:

var target = '@Url.Action("Login", "Home")';
$.post(target, { UserName: $('#txtEmail').val(), userType: $('#selection').val(),   
Password: $('#txtPassword').val() });

并且这是控制器Action方法。该控制器位于该区域内。 我正在从另一个控制器操作方法调用此控制器。

    [HttpPost]
    public ActionResult Login(string Username, string userType, string password)
    {

        HealthCareDataContext dc = null;
        try
        {
            dc = new HealthCareDataContext();
            var usr = (from obj in dc.tblAdmins
                       where obj.Username == Username.Trim()
                       && obj.Status == true
                       select obj).ToList();
            if (usr.Count > 0)
            {
                FormsAuthentication.Authenticate(Username, password);  //Redirect login page.
                FormsAuthentication.RedirectFromLoginPage(Username.Trim(), false);
                return RedirectToAction("Index", "Admin", new { area1 = "Secure", area2 = "Admin" });
            }
            else
            {
                return View();
            }
        }
        catch (Exception ex)
        {
            return View();
        }
        finally
        {
            dc = null;
        }
    }

调用此Action方法但不返回视图。但是当我手动浏览URL时,它会返回视图。

我在调用此操作时出错了。

1 个答案:

答案 0 :(得分:1)

$.post(target, { UserName: $('#txtEmail').val(), userType: $('#selection').val(),   
Password: $('#txtPassword').val() }, function(result){
    //Now check your result
});

我仍然怀疑你必须这样做,因为你在登录中使用redirectoaction会产生问题。

如果你想返回,那么尝试像这样的纯粹的ajax调用。

$.ajax({
            type: 'POST',
            url: target,
            data: $.param({ UserName: $('#txtEmail').val(), userType: $('#selection').val(),   
Password: $('#txtPassword').val() }) , 
            success: function (result) {
                alert(result);
            },
            error: function (result) {
                alert('Error');
            }            
        });