在动作中设置页面html标题

时间:2009-07-03 02:48:31

标签: asp.net-mvc

如何在控制器操作中设置Html标题?

2 个答案:

答案 0 :(得分:5)

我不相信有一种方法可以直接从控制器设置标题,而无需设置视图以接受与信息相关的某种数据。特别是因为要实际设置标题,您需要在标签之间输出数据。

那就是说,我相信你可以采取一些措施让自己更轻松。我或多或少只是在这里大声思考,所以我不能保证这会起作用。如果我确定我会在每个动作上设置我的标题,那么我会在主页面中保留标题标签并创建一个自定义属性,这样你就可以这样做:

[CustomTitleAttribute(Title = "Hello World")]
public ActionResult Index()
{
    return View();
}

由您来实现该属性并设置如何在视图和/或母版页中捕获此信息。

一般来说,由于您可能希望在具有动态数据的页面上更改标题,因此上述内容可能不是您应该执行的操作。相反,只需合并一些方法来确定视图模型中所需的标题。甚至可能是后续视图模型可以继承的基本视图模型。

public class BaseViewModel
{
    public string PageTitle { get; set; }
    public string PageDescription { get; set; }
    //etc.
}

然后在视图中你可以做到这一点,甚至在你的母版页中我认为:

<title><%= Model.PageTitle %></title>

我认为从分离关注点(这有点重要)的角度来看,这是最好的方法。

答案 1 :(得分:1)

控制器控制输出听起来不是很明智。 所有控制器都是将viewdata提供给输出视图,让视图决定如何处理它。

请参阅默认的ASP.net MVC模板以了解其完成方式。