- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有一个 MVC 网站,需要在每个页面的标题上都有动态内容。
我目前在 Controller 中正常获取所需数据并将其放置在 View 模型中。在 View 中,我获取数据并将模板部分粘贴到 Viewbag 中,最后,在主布局页面上,我获取 Viewbag 数据并将其传递给控制标题的部分。
我读到我不应该尽可能使用 Viewbag,而且我通过数据轮的次数感觉不对。
我能想到的唯一改进方法是在主布局上创建一个部分,然后将部分/数据放在 View 的部分中 - 然而,有大约 30 页,这又不是感觉像是正确的路线。
是否有更好的方法来执行此操作/获取必须转到主视图的动态数据的最佳做法是什么?
最佳答案
您可以使用子操作来做到这一点。您可以重复使用此操作,甚至可以将其包含在 _Layout 页面中。
这是一个显示一些标题信息的子操作。它被标记为 ChildActionOnly
,因此它只能在另一个 View 中调用。它还利用 OutputCache
将结果保存 5 分钟。
[ChildActionOnly]
[OutputCache(Duration = 5 * 60)]
public ActionResult Header(string section)
{
var info = new HeaderInfo
{
Section = section,
Today = DateTime.Now
};
return PartialView("_header", info);
}
_header.cshtml
@model HeaderInfo
<div>
<span>@Model.Section</span>
<span>@Model.Today.ToLongTimeString()</span>
</div>
然后在 Html.Action() or .RenderAction() 的 View 或布局中使用它.
@Html.Action("Header", "Home", new { section = "Cake" })
// or
@{Html.RenderAction("Header", "Home", new { section = "Pie" });}
您可以在布局中指定一个部分,然后在 View 中有条件地呈现。
_Layout.cshtml
@RenderSection("header", required: false)
主视图
@section header {
@{Html.RenderAction("Header", "Home", new { section = "Cake" })}
}
关于c# - 将数据从 Controller 传递到 View 布局的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33538427/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!