⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 events_download.ashx

📁 Club Site Starter Kit.rar .net 压缩包解压时不能有密码。
💻 ASHX
字号:
<%@ WebHandler Language="C#" Class="DownloadEvent" %>

using System;
using System.Web; 
using System.Data.SqlClient;
using System.Data;
using System.Text;
using System.IO;

public class DownloadEvent : IHttpHandler 
{ 
 const int BUFFERSIZE = 1024;

    public bool IsReusable
    {
        get
        {
            return true;
        }
    } 

 public void ProcessRequest(HttpContext context) 
 { 
   HttpResponse response = context.Response; 
   HttpRequest request = context.Request; 
   response.BufferOutput = true; 
   response.ContentType = "text/calendar"; 
   response.Cache.SetCacheability(HttpCacheability.NoCache); 
   int EventID = Convert.ToInt32(request.QueryString["EventID"]); 
   Uri viewurl = new Uri(context.Request.Url, "Events_view.aspx?Eventid=" + EventID); 
   writeCalEntry(EventID, response.Output, viewurl.ToString()); 
   response.End(); 
 }

    public void writeCalEntry(int EventID, TextWriter output, string url)
    {
        SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);

        string qry = "SELECT Events.starttime, Events.endtime, Events.title, Events.description, Events.staticURL, Locations.title AS LocName, Locations.directions, ";
        qry += "Locations.description AS locDesc, Locations.address ";
        qry += "FROM Locations RIGHT OUTER JOIN ";
        qry += "Events ON Locations.id = Events.location ";
        qry += "WHERE (Events.id = @id)";

        SqlCommand command = new SqlCommand(qry, connection);
        SqlParameter param0 = new SqlParameter("@id", SqlDbType.Int);
        param0.Value = EventID;
        command.Parameters.Add(param0);

        connection.Open();
        DataTable dt = new DataTable();
        dt.Load(command.ExecuteReader());
        if (dt.Rows.Count > 0)
        {
            DataRow dr = dt.Rows[0];

            System.DateTime starttime, endtime;
            string title, description, location;

            StringBuilder sb = new StringBuilder();
            object o;
            
            starttime = (DateTime)dr["starttime"];
            if (dr["endtime"] != DBNull.Value)
            {
                endtime = (DateTime)dr["endtime"];
            }
            else
            {
                endtime = starttime;
            }
            
            if (dr["title"] != DBNull.Value)
            {
                title = (string)(dr["title"]);
            }
            else
            {
                title = "An untitled clubsite event";
            }
           
            o = dr["description"];
            if (o != DBNull.Value && (string)o != "")
            {
                sb.AppendLine((string)o);
            }
            sb.AppendLine();
            
            sb.Append("Event URL: ");
            o = dr["staticURL"];
            if (o != DBNull.Value && (string)o != "")
            {
                sb.AppendLine((string)o);
            }
            else
            {
                sb.AppendLine(url);
            }
            
            o = dr["locName"];
            if (o != DBNull.Value && (string)o != "")
            {
                location = (string) o;
                sb.AppendLine();
                sb.Append("Event location: ");
                sb.AppendLine(location);
            }
            else
            {
                location = null;
            }
            
            o = dr["locDesc"];
            if (o != DBNull.Value && (string)o != "")
            {
                sb.AppendLine();
                sb.AppendLine("Location description:");
                sb.AppendLine((string)o);
            }
            
            o = dr["Address"];
            if (o != DBNull.Value && (string)o != "")
            {
                sb.AppendLine();
                sb.AppendLine("Location Address:");
                sb.AppendLine((string)o);
            }
            
            o = dr["directions"];
            if (o != DBNull.Value && (string)o != "")
            {
                sb.AppendLine();
                sb.AppendLine("Location Directions:");
                sb.AppendLine((string) o);
            }
            
            UnicodeEncoding uc = new UnicodeEncoding();
            description = sb.ToString();
            output.WriteLine("BEGIN:VCALENDAR");
            output.WriteLine("VERSION:2.0");
            output.WriteLine("PRODID:" + url);
            output.WriteLine("METHOD:PUBLISH");
            output.WriteLine("BEGIN:VEVENT");
            output.WriteLine("UID:" + Guid.NewGuid().ToString());
            output.WriteLine("DTSTAMP:" + DateTime.Now.ToUniversalTime().ToString("yyyyMMddTHHmmss") + "Z");
            output.WriteLine("CATEGORIES:APPOINTMENT;PERSONAL");
            output.WriteLine(EncodeProperty("DESCRIPTION;ENCODING=QUOTED-PRINTABLE:", description));
            output.WriteLine("DTEND:" + endtime.ToUniversalTime().ToString("yyyyMMddTHHmmss") + "Z");
            if (!(location == null))
            {
                output.WriteLine(EncodeProperty("LOCATION;ENCODING=QUOTED-PRINTABLE:", location));
            }
            output.WriteLine("PRIORITY:0");
            output.WriteLine("DTSTART:" + starttime.ToUniversalTime().ToString("yyyyMMddTHHmmss") + "Z");
            output.WriteLine("STATUS:NEEDS ACTION");
            output.WriteLine(EncodeProperty("SUMMARY;ENCODING=QUOTED-PRINTABLE:", title));
            output.WriteLine("URL:" + url);
            output.WriteLine("END:VEVENT");
            output.WriteLine("END:VCALENDAR");
        }
        connection.Close();
    }

 string EncodeProperty(string key, string value) 
 { 
   StringBuilder sb = new StringBuilder(); 
   sb.Append(key); 
   sb.Append(value); 
   sb.Replace(";", "\\;", key.Length, sb.Length - key.Length); 
   sb.Replace("\r\n", "=0D=0A"); 
   int offset = 76; 
   while (offset < sb.Length) { 
     int pos = sb.ToString(offset - 5, 10).IndexOf("=0D=0A"); 
     if (pos == -1) { 
       sb.Insert(offset - 5 + pos, "=" + "\r\n"); 
       offset += 79 - 5 + pos; 
     } else { 
       sb.Insert(offset, "=" + "\r\n"); 
       offset += 79; 
     } 
   } 
   return sb.ToString(); 
 } 

}

⌨️ 快捷键说明

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