从控制器获取ViewBag数据以进行查看

时间:2014-07-12 00:27:26

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我还在学习MVC并且我不知道它是否可能,但是我希望将其他视图ViewBag数据从控制器显示到另一个视图。

例如:

enter image description here

如何向ViewBag.Message视图显示Index.cshtml

1 个答案:

答案 0 :(得分:3)

如果您只想使用相同的字符串发送到两个视图,您可以这样做:

public class HomeController : Controller
{
    const string SomeMessage = "Your application description page.";
    public ActionResult Index()
    {
        ViewBag.Message = SomeMessage;
        return View();
    }
    public ActionResult About()
    {
        ViewBag.Message = SomeMessage;
        return View();
    }
}

如果要将字符串从“关于”页面传递到“索引”页面,可以通过允许索引页接受参数来执行此操作,您可以在关于链接到索引的链接的查询字符串中传递该参数:

家庭控制器

public class HomeController : Controller
{
    public ActionResult Index(string message)
    {
        ViewBag.Message = message;
        return View();
    }
    public ActionResult About()
    {
        ViewBag.Message = "Your application description page.";
        return View();
    }
}

About.cshtml

@Html.ActionLink("Link to index", "Index", new {message = ViewBag.Message})

Index.cshtml

@Html.DisplayFor(ViewBag.Message)

然而,在MVC概念中,在视图之间共享变量的想法并不合适。当您转到URL时,您将调用控制器。该控制器准备一些数据(可能以模型/模型的形式拉回数据),并将其传递给视图。然后,视图将此数据呈现到返回给用户的页面上。

您可能希望查看此网站以了解有关MVC的更多信息,并更好地了解这些概念:http://www.asp.net/mvc/tutorials