在WebForms中,我将始终使用我的主页来设置基于当前URL的元描述。我正在考虑为我的ASP.NET MVC项目做同样的事情,但我不确定从哪里开始。能够基于控制器和/或操作的某些默认值Incase IN不指定任何信息,可以设置标题/描述。我之所以这样做的原因是因为我喜欢一切都在一个地方,因为这很容易发现错误。

编辑:
阅读了答案并搜索谷歌搜索后,我认为从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的新手,因此我不确定在哪里初始化此功能。

有帮助吗?

解决方案 3

因此,经过几天的尝试,我最终制作了从XML文件读取的自定义过滤器。

我将代码添加到copypastecode.com
http://www.copypastecode.com/9797/
http://www.copypastecode.com/9809/
http://www.copypastecode.com/9805/

我在ASP.NET MVC和“ Real” C#编码上非常新手,因此,如果您看到奇怪的东西,请原谅我。如果有人想对其进行优化或有更好的解决方案,则可以随意将其作为答案。

我要尝试的下一件事就是没有过滤器,因此在所有控制器上都会激活它。不知道在哪里可以连接逻辑。因此,如果有人可以将我推向正确的方向,请告诉我。

其他提示

我建议以下策略:

创建模型的层次结构:

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>

而且完成了。

您可以简单地从主页的模型中获取这些数据,然后让该模型具有一些合理的默认值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top