在动作中设置页面html标题

mrb*_*lah 2 asp.net-mvc

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

Bla*_*ott 5

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

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

[CustomTitleAttribute(Title = "Hello World")]
public ActionResult Index()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

由您来实现属性并设置在视图和/或母版页中捕获此信息的方式.

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

public class BaseViewModel
{
    public string PageTitle { get; set; }
    public string PageDescription { get; set; }
    //etc.
}
Run Code Online (Sandbox Code Playgroud)

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

<title><%= Model.PageTitle %></title>
Run Code Online (Sandbox Code Playgroud)

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