2011-01-14 177 views

回答

1

您可以使用ViewBag来传递数据。

在你的控制器:在你

ViewBag.LayoutModel = myData; 

访问布局:

@ViewBag.LayoutModel 

它是一个动态的对象,所以你可以使用任何你想要的属性名称。

1

ViewBag方法是最简单的。但是,如果您需要高级功能和类型功能,则还可以尝试将该部分用公共控制器(部分视图呈现相关部分)采用该部分视图(如果该值可以独立计算并且不需要来自其他控制器的输入),并从_Layout上调用RenderPartial。
如果您想我可以给你一些关于它的详细信息...

+2

是的,请给我们介绍一下它的一些详细信息:] – cc0 2011-03-05 18:46:41

10

像往常一样,通过创建一个视图模型表示数据开始:

public class MyViewModel 
{ 
    public string SomeData { get; set; } 
} 

然后控制器将取数据从某处:

public class MyDataController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      SomeData = "some data" 
     }; 
     return PartialView(model); 
    } 
} 

然后相应的视图(~/Views/MyData/Index.cshtml)来表示数据:

@{ 
    Layout = null; 
} 
<h2>@Model.SomeData</h2> 

终于里面你_Layout.cshtml某处有这样的数据:

@Html.Action("index", "mydata") 
+0

这将意味着你必须手动添加这对每个视图。有没有办法将数据传递给每个页面的_layout.cshtml? – 2011-09-08 21:12:29