asp.net mvc 自定义Controller和ViewPage中如何设置Title?

godslife_yeah_net 2010-11-08 02:52:01


//BaseController.cs
public class BaseController : Controller
{
public void SetTitle(string title)
{
ViewData["Title"] = title;
}
.......

//DiyViewPage.cs
public class DiyViewPage : System.Web.Mvc.ViewPage
{
public DiyViewPage()
{
this.Title = "???";
}
......


//Default.aspx

...
<%=this.Title %>
...



想在aspx中输出本页的动态title。

请问:在DiyViewPage.cs中的???处如何取得BaseController 中设置好的ViewData["Title"] ?
在线等待您的指点



...全文
449 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
godslife_yeah_net 2010-11-10
  • 打赏
  • 举报
回复
4L应该是正解,谢谢



namespace Mvc_Title
{
public class GLViewPage : System.Web.Mvc.ViewPage
{
public GLViewPage()
{

}

protected override void OnLoad(EventArgs e)
{
this.Title = ViewData["DiyViewPageTitle"].ToString();
}
}
}




结论(不知道对不对):在构造方法中是取不到ViewData中的值的,onload中可以,所以override 了onload

马上结贴。
也谢谢5L的朋友。

其实我就是想通过一个SetTitle()方法来直接设置好页面的title而已
jianshao810 2010-11-09
  • 打赏
  • 举报
回复
页面都是自己写的,不是有个返回类型吗?
你将页面的基本信息写一个基类,每个action的返回类型都继承该类,到页面就
<%=obj.Title%>
夺命胖子 2010-11-09
  • 打赏
  • 举报
回复

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="MVCNoteBook.Views.Home.Demo" %>


namespace MVCNoteBook.Views.Home
{
public partial class Demo : ViewPage
{
protected void Page_Load(object sender, EventArgs e)
{
this.Title = ViewData["title"].ToString();
}
}
}


public class HomeController : Controller
{
public ActionResult Demo()
{
ViewData["title"] = "pengyi";
return View("Demo");
}
}


不知道你说的什么意思,,这样不行?
godslife_yeah_net 2010-11-08
  • 打赏
  • 举报
回复
首先谢谢你的回答,但是请好歹看一下我的意思是什么。
default.aspx中必须这样输出
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Mvc_Title.DiyViewPage" %>
<asp:Content ID="aboutTitle" ContentPlaceHolderID="TitleContent" runat="server"><%=this.Title %></asp:Content>


在DiyViewPage.cs中调试
ViewData.Count=0
TempData=null
ViewContent=null
...
夺命胖子 2010-11-08
  • 打赏
  • 举报
回复

<title><%=ViewData["Title"].ToString()%></title>
godslife_yeah_net 2010-11-08
  • 打赏
  • 举报
回复
我已经研究出用cookies和session来转存达到目的了。


HttpCookie hc = new HttpCookie("Title", title);
System.Web.HttpContext.Current.Request.Cookies.Add(hc);//1
System.Web.HttpContext.Current.Response.Cookies.Add(hc);//2
System.Web.HttpContext.Current.Session.Add("Title", title);//3



this.Title = System.Web.HttpContext.Current.Request.Cookies.Get("Title") .Value;//1
this.Title = System.Web.HttpContext.Current.Response.Cookies.Get("Title").Value;//2

this.Title = Session["Title"].ToString();//3



我想请问能不能用viewdata或者tempdata来实现

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧