【发布时间】:2012-10-24 15:41:43
【问题描述】:
我正在尝试从数据库中提取已保存的标题。我希望它每次都加载而不使用视图来调用它。所以我希望在从布局中调用它时拉出一个变量。我该怎么做?
在布局示例中:
@ViewBag.ShowTitle
这将显示给呈现布局的每个页面。我不确定如何在没有控制器的情况下将数据库中的字段调用到屏幕上。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 layout viewbag
我正在尝试从数据库中提取已保存的标题。我希望它每次都加载而不使用视图来调用它。所以我希望在从布局中调用它时拉出一个变量。我该怎么做?
在布局示例中:
@ViewBag.ShowTitle
这将显示给呈现布局的每个页面。我不确定如何在没有控制器的情况下将数据库中的字段调用到屏幕上。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 layout viewbag
只需在您的_Layout.cshtml 页面中调用PartialView。
@Html.Partial("_Title")
但您确实需要Controller 与数据库交互并将Title 值分配给ViewBag。
部分视图
<div>
<h2>
@ViewBag.ShowTitle
</h2>
</div>
您也可以按照以下链接中的说明进行操作,在该链接中定义ViewModel、Controller 并在_Layout.cshtml 内调用@Html.Action:
【讨论】:
Html.Action("index", "mydata") 时,他告诉他他想要在mydata 控制器中实现index 操作方法。控制器可以像global 控制器,其动作方法可以被应用程序中的任何视图调用。没有任何迹象表明控制器特定于单个视图。希望你能明白。
只有当您的数据库支持直接 Web 访问(如 Raven DB http://ravendb.net/docs/http-api)时,您才能避免使用控制器。
但您也可以在会话中使用技巧。比如你可以在 global.asax 中读取标题并将其保存到 Session 中,并在页面上使用 session 变量,但是这样写代码是非常糟糕的。
【讨论】: