我总是会使用我的母版页根据当前网址设置页面标题和元描述。我想为我的Asp.net Mvc项目做同样的事情,但我不知道从哪里开始。能够根据控制器和/或动作设置标题/描述并使用一些默认值,这将是很好的,因为我没有指定任何信息。我这样做的原因是因为我喜欢一切都在一个地方,因为这样可以很容易地发现错误。
修改
在阅读了答案并搜索了一些后,我认为从xml文件中获取信息可能很酷。随着Xml看起来像这样:
<website title="default title for webpage">
<controller name="HomeController" title="Default title for home controller">
<action name="Index" title="title for index action" />
</controller>
</website>
我是Asp.net Mvc的新手,所以我不确定在哪里初始化它。
答案 0 :(得分:7)
我建议采用以下策略:
创建模型层次结构:
abstract class MasterModel
{
public string PageTitle { get; set; }
}
abstract class HomeBaseModel : MasterModel
{
PageTitle = "Home";
}
abstract class UsersBaseModel : MasterModel
{
PageTitle = "Users";
}
/************************************/
class HomeNewsModel : HomeBaseModel
{
PageTitle = "News";
}
class UsersProfileModel : UsersBaseModel
{
PageTitle = "Profile";
}
您可以定义一个主模型来保存页面标题,并创建基本模型来保存控制器的默认标题。这样,您可以显式定义每个操作中的标题,也可以将其保留,以便使用此控制器的默认标题。
然后在您的主视图中,您只需编写一次:
<title><%= Model.PageTitle %></title>
已经完成了。
答案 1 :(得分:0)
您可以简单地从母版页的模型中提取该数据,然后让该模型具有一些合理的默认值。
答案 2 :(得分:0)
因此,在尝试了几天之后,我最终制作了一个从XML文件中读取的自定义过滤器。
我将代码添加到copypastecode.com
http://www.copypastecode.com/9797/
http://www.copypastecode.com/9809/
http://www.copypastecode.com/9805/
我是Asp.net Mvc的新手和“真正的”C#编码所以如果你看到奇怪的东西请原谅我。如果有人想要优化它或有更好的解决方案随时发布它作为答案。
接下来我要尝试的是没有过滤器,所以它在所有控制器上激活。不知道在哪里连接逻辑。所以,如果有人能让我走向正确的方向,请告诉我。