如何在控制器操作中设置Html标题?
答案 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模板以了解其完成方式。