如何将ActionResult返回到正确的视图?

时间:2014-02-07 13:56:13

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-controller

我有一个不依赖于ASPNET进行身份验证的MVC 3 Web应用程序(更像是一个子应用程序),因为它已经在应用程序的另一个区域中使用,我们正在使用不同类型的凭据。无论如何,我决定使用自己的SQL表创建自己的身份验证系统,该表在应用程序的一个表单上正常工作。现在,我正在尝试将其转换为共享布局,在家庭控制器中调用“登录”操作。我遇到的问题是如何从登录操作返回到用户所在的位置。当我尝试“返回View();”它可以理解地尝试返回到不存在的Home / Login视图。如何从动作返回到动作之前的任何位置?所有视图都使用共享布局,所以我希望这很简单!

public class HomeController : Controller       
{

 .....

    private DataModel db = new DataModel();

    //
    // GET: /Home/

    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Login()
    {

        string un = Request["form_un"];
        string pc = Request["form_pc"];
        int usercount = db.JobBoardUsers.Where(u => u.userid.Equals(un) && u.passcode.Equals(pc)).Select(u => new AccountModel() { uid = u.id }).Count();
        usercount = db.JobBoardUsers.Where(u => u.userid.Equals(un) && u.passcode.Equals(pc)).Count();
        if (usercount > 0)
        {
            HttpContext.Session["IsSignedIn"] = true;
            HttpContext.Session["IsSignedInId"] = un;
        }
        return View();
    }

1 个答案:

答案 0 :(得分:1)

您需要使用return return View()或return RedirectToAction方法,而不是Redirect

您可以使用不同的方法在登录操作中获取上一页

1)将当前页面url作为参数传递给登录操作方法,并在成功认证后用于重定向

2)使用Request对象获取UrlReferrer属性值,并将其用作要重定向的页面。

Chek this blog post,他们解释了他们是如何在nerddinner中做到的。