zoukankan      html  css  js  c++  java
  • 抛弃TitleContent Asp.net MVC中页面标题的新解决方法

    在Asp.net MVC 1.0正式版中的模板页中提供了:

    <asp:ContentPlaceHolder ID="TitleContent" runat="server" />

    这样可以让你在每个View中独立设定页面标题(Title),不过这样的弊端就是假如我的页面标题是如下形式:

    统一标题 - 副标题

    那么要在每个View中都写上:

    日记页面:

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
        CaraQ - 日记
    </asp:Content>

    相册页面:

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
        CaraQ - 相册
    </asp:Content>

    ……

    假如有一天我要把其中的统一标题改一下那就得一个页面一个页面的去改,太过麻烦,而且这种命名标题的方法我认为也有背MVC的精神--让控制器决定视图显示的内容

    其实有更简单的实现方法,如下:

    首先定义每个Controller的父类如下:

    Code
     public class BaseController : Controller
     {
            
    private readonly string _titleFormat = "CaraQ - {0}";
            
    private string _title;

            
    protected string Title
            {
                
    get { return _title; }
                
    set { _title = value; }
            }

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                ViewData[
    "Title"= string.Format(_titleFormat, Title);
                
    base.OnActionExecuted(filterContext);
            }
    }

    让所有的Controller继承这个父类,设置页面标题的方法只需要在Action中使用如下方式即可:

    public class BlogController : BaseController
    {
        
    public ActionResult Index()
        {
            
    this.Title = "日记";
        }
    }

    最后在模板页中把TitleContent占位控件换成:

    <%=ViewData["Title"%>

    这样就可以了,看到这样给页面命名标题是不是就简单多了,在View中了不会有那个像

    <asp:Content ID="titleContent" ContentPlaceHolderID="TitleContent" runat="server"></asp:Content>

    的控件了,要修改统一标题时只需要修改BaseController中的_titleFormat字串就可以了

  • 相关阅读:
    解决:Could not resolve archetype org.apache.maven.archetypes
    Spring MVC配置MyBatis输出SQL
    Spring集成MyBatis 通用Mapper以及 pagehelper分页插件
    关于SpringMVC或Struts2接受参数接收不到的原因
    配置quartz启动时就执行一次
    ajaxFileUpload进行文件上传时,总是进入error
    spring mvc注入配置文件里的属性
    java中将一个文件夹下所有的文件压缩成一个文件
    flume failed to start agent because dependencies were not found in classpath
    ubuntu不能安装pip unable to install pip in unbuntu
  • 原文地址:https://www.cnblogs.com/XiaoG/p/1457278.html
Copyright © 2011-2022 走看看