在布局页面中处理操作状态的正确方法是什么?

时间:2013-01-07 02:12:30

标签: asp.net-mvc

我的意思是:我有一个布局页面,根据正在调用的操作显示不同的 favicon。所以我在布局中有一些看起来像这样的代码:

<link href="/images/favicon/@(AmbientPage.ShortName).ico" type="image/ico" rel="icon" />

AmbientPage变量是在Index操作中设置的全局值,由布局文件读取,该文件动态地为所请求的页面写入图标文件名。这对我来说似乎很狡猾,但我也没有看到很好的方法。

当布局页面需要知道动作中发生的事情时,你会怎么做?

1 个答案:

答案 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" />
 }

就个人而言,我建议你使用章节方法使代码“相互依赖”