discussdetails.aspx.cs

来自「三层架构的.net源码三层架构的.net源码」· CS 代码 · 共 220 行

CS
220
字号
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace MyStarterKit.Portal.Web
{
	/// <summary>
	/// DiscussDetails 的摘要说明。
	/// </summary>
	public class DiscussDetails : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.LinkButton ReplyBtn;
		protected System.Web.UI.WebControls.Panel ButtonPanel;
		protected System.Web.UI.WebControls.TextBox TitleField;
		protected System.Web.UI.WebControls.TextBox BodyField;
		protected System.Web.UI.WebControls.LinkButton updateButton;
		protected System.Web.UI.WebControls.LinkButton cancelButton;
		protected System.Web.UI.WebControls.Panel EditPanel;
		protected System.Web.UI.WebControls.Label Title;
		protected System.Web.UI.WebControls.Label CreatedByUser;
		protected System.Web.UI.WebControls.Label CreatedDate;
		protected System.Web.UI.WebControls.Label Body;
		protected System.Web.UI.HtmlControls.HtmlAnchor prevItem;
		protected System.Web.UI.HtmlControls.HtmlAnchor nextItem;
	
		int moduleId = 0;
		int itemId = 0;

		private void Page_Load(object sender, System.EventArgs e)
		{
			// 所属模块Id
			moduleId = Int32.Parse(Request.Params["Mid"]);

			// 项Id
			if (Request.Params["ItemId"] != null) 
			{
				//查看留言的Id
				itemId = Int32.Parse(Request.Params["ItemId"]);
			}
			else 
			{
				// 为0表示发表留言
				itemId = 0;
				EditPanel.Visible = true;
				ButtonPanel.Visible = false;
			}

			// 当第一次提交,且有留言时绑定初始数据
			if (Page.IsPostBack == false && itemId != 0) 
			{
				BindData();
			}

			// 验证用户是否可以修改指定模块
			if (PortalSecurity.HasEditPermissions(moduleId) == false) 
			{
				// 无留言权的,不能新建,只能查看
				if (itemId == 0) 
				{
					Response.Redirect("~/Admin/EditAccessDenied.aspx");
				}
				else 
				{
					// 不显示回复按钮
					ReplyBtn.Visible=false;
				}
			}
		}

		/// <summary>
		/// 回复
		/// </summary>
		/// <param name="Sender"></param>
		/// <param name="e"></param>
		void ReplyBtn_Click(Object Sender, EventArgs e) 
		{
			// 显示留言部分
			EditPanel.Visible = true;
			ButtonPanel.Visible = false;
		}

		/// <summary>
		/// 提交新留言
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		void UpdateBtn_Click(Object sender, EventArgs e) 
		{
			DiscussionDB discuss = new DiscussionDB();
			itemId = discuss.AddMessage(moduleId, itemId, User.Identity.Name, Server.HtmlEncode(TitleField.Text), Server.HtmlEncode(BodyField.Text));
			EditPanel.Visible = false;
			ButtonPanel.Visible = true;
			BindData();
		}

		/// <summary>
		/// 取消
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		void CancelBtn_Click(Object sender, EventArgs e) 
		{

			// Update visibility of page elements
			EditPanel.Visible = false;
			ButtonPanel.Visible = true;
		}

		/// <summary>
		/// 初始化绑定页面数据
		/// </summary>
		void BindData() 
		{
			// Obtain the selected item from the Discussion table
			DiscussionDB discuss = new DiscussionDB();
			SqlDataReader dr = discuss.GetSingleMessage(itemId);
        
			// Load first row from database
			dr.Read();

			// Security check.  verify that itemid is within the module.
			int dbModuleID = Convert.ToInt32(dr["ModuleID"]);
			if (dbModuleID != moduleId)
			{
				dr.Close();
				Response.Redirect("~/Admin/EditAccessDenied.aspx");
			}

			// Update labels with message contents
			Title.Text = (String) dr["Title"];
			Body.Text = (String) dr["Body"];
			CreatedByUser.Text = (String) dr["CreatedByUser"];
			CreatedDate.Text = String.Format("{0:d}", dr["CreatedDate"]);
			TitleField.Text = ReTitle(Title.Text);

			int prevId = 0;
			int nextId = 0;

			// Update next and preview links
			object id1 = dr["PrevMessageID"];
        
			if (id1 != DBNull.Value) 
			{
				prevId = (int) id1;
				prevItem.HRef = Request.Path + "?ItemId=" + prevId + "&mid=" + moduleId;
			}

			object id2 = dr["NextMessageID"];
        
			if (id2 != DBNull.Value) 
			{
				nextId = (int) id2;
				nextItem.HRef = Request.Path + "?ItemId=" + nextId + "&mid=" + moduleId;
			}
        
			// close the datareader
			dr.Close();
        
			// Show/Hide Next/Prev Button depending on whether there is a next/prev message
			if (prevId <= 0) 
			{
				prevItem.Visible = false;
			}

			if (nextId <= 0) 
			{
				nextItem.Visible = false;
			}
		}

		/// <summary>
		/// 获取回复标题
		/// </summary>
		/// <param name="title"></param>
		/// <returns></returns>
		String ReTitle(String title) 
		{

			if (title.Length > 0 & title.IndexOf("Re: ",0) == -1) 
			{
				title = "Re: " + title;
			}

			return title;
		}


		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.ReplyBtn.Click += new System.EventHandler(this.ReplyBtn_Click);
			this.updateButton.Click += new System.EventHandler(this.UpdateBtn_Click);
			this.cancelButton.Click += new System.EventHandler(this.CancelBtn_Click);
			this.Load += new System.EventHandler(this.Page_Load);
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?