2017年6月23日 星期五

Ical.NET 使用方式

程式碼如下:

 var calendarCollection = Ical.Net.Calendar.LoadFromFile(@"c:\basic.ics");
            var firstCalendar = calendarCollection.First();
            //var firstEvent = firstCalendar.Events.First();
            var anEventList = firstCalendar.Events;

            String TestMergr;
            String TestMergr_;
            TestMergr = String.Empty;
            TestMergr_ = String.Empty;
            anEventList.ToList().ForEach(s =>
            {
                TestMergr_ =
                       "<tr>" +
                       "<td align=center valign=middle > " + s.DtStart + " </td>" +
                       "<td align=center valign=middle > " + s.DtEnd + " </td>" +
                       "<td align=center valign=middle > " + s.Summary + " </td>" +
                       "<td align=center valign=middle > " + s.Location + " </td>" +
                       "</tr>";
                TestMergr = TestMergr + TestMergr_;
            });

testall.Text = TestMergr;

========================================================================
參考網址Ical.NET Wiki 說明:https://github.com/rianjs/ical.net/wiki/Deserialize-an-ics-file

一個ics文件在其中有多個VCALENDAR是有點不尋常,但它是允許的。由於ics文件的容器類功能,加載一個可以生成一個CalendarCollection而不是一個Calendar。在大多數用例中,Calendar該集合中只有一個。(翻譯)

此示例顯示最常見的用例,其中一個Calendar用於CalendarCollection。我們將使用LINQ來“到達”每個集合,並採取第一個事件。(翻譯)

var calendarCollection = Calendar.LoadFromFile(@"path\to\file.ics");
var firstCalendar = calendarCollection.First();
var firstEvent = firstCalendar.Events.First();

****************************************************
var calendarCollection = Ical.Net.Calendar.LoadFromFile(@"c:\basic.ics");
日曆集合 = Ical.Net 從檔載入日曆 (檔案位置)

var被稱為隱含型別,在編譯時期宣告成隱含型別的變數,其真實型別由等號右邊的值型別所決定,請記住,是在編譯時期就已經決定其真實型別了。
@忽略跳脫符號

var firstCalendar = calendarCollection.First();
第一個日曆 = 日曆集合.第一()

var firstEvent = firstCalendar.Events.First();                     (網站使用的方法)
第一個事件 = 第一個日曆.事件.第一()

var anEventList = firstCalendar.Events;
事件清單 = 第一個日曆.事件                                          (使用下列方法就可以取用了)

anEventList.ToList().ForEach(s => {要做的動作});
事件清單轉成List清單,並且使用foeach操作(s =>



2017年6月19日 星期一

行事曆推撥管理(SQL 指令)

下列虛擬測試(非真實表)
於 CalPushMan 資料庫

建立 CalPushMan 資料表

CREATE TABLE CalPush (
UID varchar(40) PRIMARY KEY NOT NULL,
DTSTART varchar(20) NOT NULL,
DTEND varchar(20) NOT NULL,
SUMMARY varchar(MAX) DEFAULT '' NOT NULL,
LOCATION varchar(MAX) DEFAULT '' NOT NULL,
DESCRIPTION varchar(MAX) DEFAULT '' NOT NULL,
PushGroup varchar(MAX) DEFAULT '' NOT NULL,
AutoPush bit DEFAULT 0 NOT NULL,
PushStatus varchar(10) DEFAULT '' NOT NULL,
)
==============================================================
建立 CalPushManSet 資料表

CREATE TABLE CalPushManSet (
SetNum int PRIMARY KEY IDENTITY NOT NULL,
Unit varchar(40) NOT NULL,
IcalUrl varchar(256) NOT NULL,
)
==============================================================
建立 CalPushAccount 資料表

CREATE TABLE CalPushAccount (
AccountNum int PRIMARY KEY IDENTITY NOT NULL,
AccountlID varchar(20) NOT NULL,
AccountStaffLevel varchar(10) NOT NULL,
)




==============================================================
說明:
CREATE TABLE CalPush (                              
          <====建立資料表  CalPush
UID varchar(40) PRIMARY KEY NOT NULL,
          <====建立欄位UID,變動長度字串(最大40位元,設為PK,不能為 NULL 空值
DTSTART varchar(20) NOT NULL,
DTEND varchar(20) NOT NULL,
SUMMARY varchar(MAX) DEFAULT '' NOT NULL,
          <====建立欄位SUMMARY,變動長度字串(最大2GB,預設為'空'字串,不能為 NULL 空值
LOCATION varchar(MAX) DEFAULT '' NOT NULL,
DESCRIPTION varchar(MAX) DEFAULT '' NOT NULL,
PushGroup varchar(MAX) DEFAULT '' NOT NULL,
AutoPush bit DEFAULT 0 NOT NULL,
PushStatus varchar(10) DEFAULT '' NOT NULL,
)

SetNum int PRIMARY KEY IDENTITY NOT NULL,
          <====建立欄位SetNum,整數資料,自動遞增(開始,遞增)預設都為1,不能為 NULL 空值

2017年6月15日 星期四

行事曆推撥管理(VS2013 新增 Web Form 網站)

VS2013 安裝以下 NuGet 套件

  • ASP.NET Identity Database v2.0.0
  • BetterRegions
  • BootstrapSnippets
  • ChromeExtensionVsix
  • Cobisi.RoutingAssistant-v1.8
  • CodeAlignment
  • CodeJumper
  • CodeMaid v10.4.53
  • ColorThemeEditor
  • CSharpOutline
  • DeveloperAssistant_2012
  • GitSccProvider
  • GoToDef
  • JavaScript Snippet Pack v1.2.15
  • jQueryCodeSnippets
  • JsMapParser.VsExtension
  • Mindscape.WebWorkbench.Integration.10
  • NuGet.Tools
  • ProPowerTools
  • Saha Wpf Theme 2012
  • SlowCheetah.VisualStudio
  • SqlCeVsToolbox.4.7.87
  • WebEssentials2012
  • VS11-KB3002339.exe
以下是校務系統需要安裝的
安裝了以後,
ConnDB.cs 裡的
using WebMatrix.Data;

unicodeConvert.cs 裡的
using iTextSharp.text;                      
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

Json.cs 裡的
using Newtonsoft.Json;

*.cs 裡的
using OfficeOpenXml;
using OfficeOpenXml.Style;

using Novacode;

using AjaxControlToolkit;

using System.Transactions;

就可以正常了。

========================================================================
HTML font color 文字顏色
CSS color 文字顏色

========================================================================
Site.master
修改 <title><%: Page.Title %> ~行事曆推撥管理</title>


HTML font color 文字顏色範例二、透過 css style 來設計 font color
<span style="color:orange;">文字顏色為橘色</span>
以上範例輸出
文字顏色為橘色






2017年6月12日 星期一

visual studio 2012 nuget 建議

資料來源:http://kevintsengtw.blogspot.tw/2014/05/visual-stuidio-2012-aspnet-mvc-5.html

VSCommands

Web Essentials 2012

devColor

Visual Studio 2012 Color Theme Editor

jQuery Code Snippets

Telerik ASP.NET MVC VSExtensions

Telerik ASP.NET AJAX VSExtensions

Region Highlights

Code Jumper

Productivity Power Tools 2012

I Hate #Regions


要讓 Visual Studio 2012 可以建立並開發 ASP.NET MVC 5 專案,必須要下載並安裝「ASP.NET and Web Tools 2013.1 for Visual Studio 2012」,下載的位置如下:

https://www.microsoft.com/web/handlers/webpi.ashx/getinstaller/WebNode11Pack.appids

Extended Template for ASP.NET MVC 5 from Visual Studio 2012
如果你還是想在 VS2012 裡所開發的 ASP.NET MVC 5 專案範本是跟 VS2013 的一樣的話,可以使用 Jose M. Aguilar 所建立的範本,文章連結如下:

Extended Template for ASP.NET MVC 5 from Visual Studio 2012 -  campus MVP.net - Jose M. Aguilar

將文章裡所提供的專案範本下載到電腦裡,然後將壓縮檔的內容解壓縮後複製到以下的路徑,

%USERPROFILE%\Documents\Visual Studio 2012\Templates\ProjectTemplates\Visual C#\Web

簡單說就是「文件」資料夾裡的 Visual Studio 2012 目錄,如下:

C:\Users\使用者名稱\Documents\Visual Studio 2012\Templates\ProjectTemplates\Visual C#\Web

專案範本

先在專案上面按右鍵,選擇[管理NuGet套件]=>還原
再按右鍵,選擇[管理NuGet套件]

2017年6月6日 星期二

公告推撥系統~紀錄 (轉C#,使用VS2017+ASP.NET Code 1.1)

建立專案
    • [檔案]->[新增]->[專案]
      • Visual C#->Web->ASP.NET Web 應用程式(.NET Framework)
        • 名稱:
        • 方案名稱:
      • 選 MVC

    
    
    加入會用到的 NuGet 模組

    • Install-Package WebMatrix.Data (會安裝 Microsoft.AspNet.WebPages.Data 及 WebMatrix.Data)


    加入資料庫通用模組
    ConnDB
    ★using WebMatrix.Data;











    把資料庫,反向工程,轉成XXXXXX.cs Models 函式

    VS2017
    工具>NgGet封裝管理員>套件管理器主控台

    執行下列命令  (""裡的字串,是複製資料表>屬性>連接字串)
    PM>scaffold-dbcontext "Data Source=資料庫IP;Initial Catalog=資料表;Integrated Security=False;User ID=使用者;Password=密碼;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" Microsoft.EntityFrameworkCore.SqlServer -force
    會轉出如下資料

    using System;
    using Microsoft.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore.Metadata;
     
    namespace 公告推撥系統
    {
        public partial class NTTU_BulletinContext : DbContext
        {
            public virtual DbSet<MainBulletin> MainBulletin { getset; }
     
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                #warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
                optionsBuilder.UseSqlServer(@"Data Source=xxx.xxx.xxx.xxx;Initial Catalog=資料表;Integrated Security=False;User ID=帳號;Password=密碼;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            }
     
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<MainBulletin>(entity =>
                {
                    entity.HasKey(e => e.BulletinNumber)
                        .HasName("PK_main_bulletin");
     
                    entity.ToTable("main_bulletin");
     
                    entity.Property(e => e.BulletinNumber)
                        .HasColumnName("bulletin_number")
                        .ValueGeneratedNever();
     
                    entity.Property(e => e.ActivityPost).HasColumnName("activity_post");
     
                    entity.Property(e => e.BulletinContent)
                        .HasColumnName("bulletin_content")
                        .HasColumnType("varchar(max)");
     
                    entity.Property(e => e.BulletinTitle)
                        .HasColumnName("bulletin_title")
                        .HasColumnType("varchar(max)");
     
                    entity.Property(e => e.DraftBoolean).HasColumnName("draft_boolean");
     
                    entity.Property(e => e.FilePath)
                        .HasColumnName("file_path")
                        .HasColumnType("varchar(250)");
     
                    entity.Property(e => e.MeetingPost).HasColumnName("meeting_post");
     
                    entity.Property(e => e.OpenPost).HasColumnName("open_post");
     
                    entity.Property(e => e.PostDateTime)
                        .HasColumnName("post_date_time")
                        .HasColumnType("smalldatetime");
     
                    entity.Property(e => e.PostEmail)
                        .HasColumnName("post_email")
                        .HasColumnType("varchar(100)");
     
                    entity.Property(e => e.PostRemind).HasColumnName("post_remind");
     
                    entity.Property(e => e.PostUnit)
                        .IsRequired()
                        .HasColumnName("post_unit")
                        .HasColumnType("varchar(100)");
     
                    entity.Property(e => e.StartDateTime)
                        .HasColumnName("start_date_time")
                        .HasColumnType("smalldatetime");
     
                    entity.Property(e => e.StopDateTime)
                        .HasColumnName("stop_date_time")
                        .HasColumnType("smalldatetime");
                });
            }
        }
    }

    2017年6月2日 星期五

    建議安裝 Visual Studio 2017 擴充套件

    資料參考來源:http://www.cnblogs.com/linezero/p/vs2017aspnetcore.html

    節錄如下:

    编辑的csproj文件推荐NuGet 安装包: Project File Tools

     https://marketplace.visualstudio.com/items?itemName=ms-madsk.ProjectFileTools

     ASP.NET Core Tag Helpers 智能提示:Razor Language Services

     https://marketplace.visualstudio.com/items?itemName=ms-madsk.RazorLanguageServices

    Web Essentials Web开发利器:

    https://marketplace.visualstudio.com/items?itemName=MadsKristensen.WebExtensionPack2017

    Productivity Power Tools 2017 效率开发:

    https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ProductivityPowerPack2017

    cas server 一直圈圈或取得狀態異常

    重點: cas server 不能開 VPN,會造成取的來源 dns 異常,會一直轉圈圈或等很久。