我的意思是:我有一个布局页面,根据正在调用的操作显示不同的 favicon。所以我在布局中有一些看起来像这样的代码:
<link href="/images/favicon/@(AmbientPage.ShortName).ico" type="image/ico" rel="icon" />
AmbientPage
变量是在Index
操作中设置的全局值,由布局文件读取,该文件动态地为所请求的页面写入图标文件名。这对我来说似乎很狡猾,但我也没有看到很好的方法。
当布局页面需要知道动作中发生的事情时,你会怎么做?
答案 0 :(得分:0)
通常我会使用子操作或部分来避免在布局页面中使用逻辑。因此,在上面的情况中,其他方法是将当前页面的名称传递给子操作,让子操作确定要使用的图标/操作。
这将是:
@Html.Action("Icon", "Default", new { @ViewContext.RouteData["Action"] })
或者在布局页面中使用部分,添加以下代码
//true since they all required to have an icon
@RenderSection("Icon", true)
然后在你看来你只是做
@section Icon{
<link href="/images/favicon/currentpage.ico" type="image/ico" rel="icon" />
}
就个人而言,我建议你使用章节方法使代码“相互依赖”