2011-08-04 182 views
1

检索我有一个单页有部分控制它称为PartialContactASP.Net MVC剃刀 - 写在TempData的剃刀和控制

在重用这种控制,我想在PartialContact控制范围内更改标题。即

 // change to Title1 
     @Html.EditorFor(model => Model.Contact1, "PartialContact") 
     // change to Title2 
     @Html.EditorFor(model => Model.Contact2, "PartialContact") 
     // change to Title3 
     @Html.EditorFor(model => Model.Contact3, "PartialContact") 

什么是在Razor内传递标题文本的最佳方式? TempData的?

(我有多个不同的控制,我需要用藏汉做到这一点)

非常感谢

克里斯

+0

有人能写出一个属性的答案。但是如果你只是想要一个快捷方式,使用'ViewBag'。为了更清洁的解决方案,请使用视图模型即定义一个'ContactViewModel',它具有'Title'属性,以及你想要公开的'Contact'属性。然后改变'Contact1'.etc指向'ContactViewModel'。在您的控制器中,您可以在创建这些视图模型时设置“标题”。 – user1122345

+0

当然,还有另一种方法可以做到这一点,而不是创建另一个装饰班? - 我只想换个标题? - 现在将尝试ViewBag。如果这是唯一的方式,我想我会这样做 - 只是希望有另一种方式,我可以通过一个关键/价值包和模型的控制。感谢您的回答 –

回答

1

使用的ViewDataDictionary传递的价值,例如

@{ 
    ViewData["Title"] = "Blah"; 
    Html.EditorFor(model => Model.Contact1, "PartialControl", ViewData); 
} 

然后访问它在部分与@ViewData["Title"]

+0

谢谢我使用ViewContext.TempData修复了它 - ViewContext.TempData [“Heading”] =“Whatever”; –

+0

够公平的。它们几乎是可以互换的,尽管TempData会持续两个连续的请求,所以请牢记这一点。 – link664