如何将值从一个控制器传递到ASP.Net MVC3中的另一个控制器

Nid*_*esh 3 c# asp.net-mvc-3

您好在我的项目中,我必须将带有用户名的欢迎消息传递给索引页面它是一个MVC3 ASP.Net Razor项目

那里有两个控制器; 一个是登录控制器,第二个是家庭控制器.从Login Controller,我必须将登录人的UserName传递给视图页面.

登录控制器重定向到另一个名为Home Controller的控制器.从那里我必须将该值传递给视图页面.那是我的问题.我试过用单个控制器来查看它的工作情况.

我无法使用单一控制器,因为登录控制器使用登录页面和家庭控制器使用主页.两者都是不同的观点.

我试过像这样,但它不起作用.你能建议一个好的方法吗?

登录控制器

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

[HttpPost]
public ActionResult Index(LoginModel model)
{
    if (ModelState.IsValid)
    {
        if (DataAccess.DAL.UserIsValid(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, false); 
            return RedirectToAction("Index", "Home" );
        }
        else
        {
            ModelState.AddModelError("", "Invalid Username or Password");
        }
    }

    return View();
}
Run Code Online (Sandbox Code Playgroud)

家庭控制器

public ActionResult Index()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

the*_*Law 14

你可以试试Session,比如

Session["username"] = username;
Run Code Online (Sandbox Code Playgroud)

并在其他控制器使用中恢复

var username = (string)Session["username"]
Run Code Online (Sandbox Code Playgroud)

或者在重定向中尝试使用

return RedirectToAction("Index", "Nome", new{ username: username})
Run Code Online (Sandbox Code Playgroud)

但是你的控制器的动作必须具有(字符串用户名)之类的参数

public ActionResult Index(string username)
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)