2017年5月8日 星期一

[C#] 日期時間

 

以下是特定時間與當下時間差做比較,並以小時表示

var timeDiff = new TimeSpan(BeginTime.Ticks - DateTime.Now.Ticks).TotalHours;

2017年4月25日 星期二

[C#] 日期比較

 

DateTime.Compare(date1, date2) > 0) 表示 date1 > date2

DateTime.Compare(date1, date2) == 0) 表示 date1 == date2

DateTime.Compare(date1, date2) < 0) 表示 date1 < date2

2017年4月17日 星期一

[mvc] 加入多國語系


簡易流程 : 簡單說就是利用cookie紀錄瀏覽器的預設語系,然後在server端切換對應的語系檔(.resource)
1.在controller 加入切換語系的action

public ActionResult ChangeLang(String langCode, String bakCtrl, String bakAct)
      {
          //use Cookies save lang code
          HttpCookie LangCookie = Request.Cookies["lang"];
 
          if (LangCookie == null)
          {
              LangCookie = new HttpCookie("lang");
          }
 
          LangCookie.Value = langCode;
          LangCookie.Expires.AddDays(1);
          Response.Cookies.Add(LangCookie);
 
          if (String.IsNullOrEmpty(bakCtrl) || String.IsNullOrEmpty(bakAct))
          {
              return RedirectToAction("Index", "Home");
          }
          else
          {
              return RedirectToAction(bakAct, bakCtrl);
          }
      }
 
 
2.在html加入切換語系
<a href="@Url.Action("ChangeLang", "Home", new { langCode = "zh-TW" })">中文</a>
…
3.在Global.asax 設定cookie語言的資訊

protected void Application_BeginRequest(Object sender, EventArgs e)
      {
          HttpCookie myLang = Request.Cookies["lang"];
          if (myLang != null)
          {
              System.Threading.Thread.CurrentThread.CurrentCulture =
                  new System.Globalization.CultureInfo(myLang.Value);
              System.Threading.Thread.CurrentThread.CurrentUICulture =
                  new System.Globalization.CultureInfo(myLang.Value);
          }
      }
 

4.新增resource資源檔 增加欄位即可
參考 :  https://goo.gl/5gh9gw
編輯多國語系套件 : http://resxmanager.codeplex.com/

2017年3月28日 星期二

[Error][EF6] 使用Notracking 合併選項傳回物件時…

 

error : 使用Notracking 合併選項傳回物件時…不包含物件時呼叫Load

2017-03-28_104819

解 : 跟以前一樣,都不是本身的問題,是table 跟 table 之間關連的問題,記得使用metadata 加入 jsonignore 來忽略循環select的問題

2017年3月14日 星期二

[Filter] OnActionExecuting


如果需要在進Action前執行特定行為,如過濾

就需要額外新增一個class並繼承ActionFilterAttribute

裡面有四個基本功能

Action,Result執行前後

範例 :
//public override void OnActionExecuting(ActionExecutingContext filterContext)       
//{       
//    string currentDomain = filterContext.HttpContext.Request.Headers["HOST"];       
//    List<string> domains = WebConfigurationManager.AppSettings["AllowDomain"].ToString().Split(',').ToList();       
//    if (!domains.Any(i => i.Contains(currentDomain)))       
//    {      
//        throw new Exception("未允許的網域");       
//    }       
//}

2017年3月2日 星期四

{JS} IE11 遇到Get回傳參數是中文變成亂碼

 

感謝隔壁伙伴的相助,才能這麼快就解決這個問題

當IE遇到Get回傳參數是中文會變成亂碼, 也就是回傳一堆菱形,

這在chrome, firfox 沒問題。

 

因此請先利用js都先編碼encode後再傳送處理

ex. 範例來源

var uri = "https://w3schools.com/my test.asp?name=ståle&car=saab";
var res = encodeURIComponent(uri);

// 編碼後 : https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab

2017年2月2日 星期四

[SQL] 取得當前是第幾週? 跟下一週是

 

遇到一個狀況是2017/2/1  和 20172/3 是同一週就要歸在一起

所以我必須先轉換成同一週才能比較

SQL 上使用DATENAME 函式  參考網址

DATENAME(WK, ‘2017-02-01’) 其週數會和另一個同一週

 

另外如要join 本週跟上一週資料再搭配DATEADD (datepart , number, date )即可

ex.  SELECT DATEADD(week,1,GetDate()) --當前日期加一周後的日期