2016年11月29日 星期二

[AngularJS] 限制字串長度

 

網站顯示時,有時需要限制多少文字長度,然後後面加上…的需求

以下是參考stackoverflow使用ng來解決 :

 

擴充一個filter :

angular.module('ng').filter('cut', function () {
        return function (value, wordwise, max, tail) {
            if (!value) return '';

            max = parseInt(max, 10);
            if (!max) return value;
            if (value.length <= max) return value;

            value = value.substr(0, max);
            if (wordwise) {
                var lastspace = value.lastIndexOf(' ');
                if (lastspace != -1) {
                  //Also remove . and , so its gives a cleaner result.
                  if (value.charAt(lastspace-1) == '.' || value.charAt(lastspace-1) == ',') {
                    lastspace = lastspace - 1;
                  }
                  value = value.substr(0, lastspace);
                }
            }

            return value + (tail || ' …');
        };
    });
 
 
使用上 : 
{{some_text | cut:true:100:' ...'}}

 

參考 : http://stackoverflow.com/questions/18095727/limit-the-length-of-a-string-with-angularjs

2016年11月22日 星期二

[C#] 發信設定移到webconfig


因需求可能調整發信的smtp,所以把設定寫在程式碼內會變得相關不方便

因此建議可以移到webconfig來提升彈性

webconfig 在system.web相同層級加入以下範例

  
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network defaultCredentials="false"
          host="smtp.gmail.comport="25enableSsl="true"
          userName="xx@gmail.compassword="xxcc" />
      </smtp>
    </mailSettings>
  </system.net>


如此一來在程式中就會變成

MailMessage mail = new MailMessage();

mail……內容設定

SmtpClient client = new SmtpClient();

client.Send(mail);

 
是不是更簡潔囉~
 

2016年11月16日 星期三

[Html] 信箱可以用html 加 css ??

 

剛剛遇到客戶回饋說要在信中加入美化的畫面

但設計給的是一般的html 還引用js,css….

當然直接套入發信後,一片空白….

 

後來發現這篇文章說 :

https://css-tricks.com/using-css-in-html-emails-the-real-story/

要套css可以,但是要寫在dom物件內

也就是不能外連也不能使用<style></style>

 

撲吃…聽起來又要回到過去的感覺…

後來電話溝通後,發現是烏龍不是要在美化信件,是連出去的頁面要美化….XDDD

好家在!

2016年11月15日 星期二

[AngularJs] 截圖套件 - ngImgCropExtended


最近遇到客戶需要上傳圖片時加入截圖的流程
換了ng開發後就沒有使用截圖套件了,因此到網上找了一些相關套件

1.ngImgCrop

看了Demo之後覺得不錯,但事後發現一個問題就是他只能固定正方形截圖,
而且截出來的圖必須指定大小,不能依上傳的圖片等比裁切

因此進一步查到有好新人事幫忙擴充 https://github.com/CrackerakiUA/ui-cropper
他提供裁切可以任意矩型,而且可以裁出來可以是原畫質的大小

html 參考 :

<img-crop image="myImage"
          result-image="imgPath"
          area-type="rectangle"
          result-image-size="'max'"
          on-load-done="onLoadDone()"></img-crop>
 
檔案只要把ng-img-crop.js, ng-img-crop.css加入
並在app.module include ngImgCrop 即可使用他的directive囉
 
其他參考demo
Codepen: Circle + Chargement Crop
Codepen: Square + Init Url Crop + Maximum rendered image
Codepen: Rectangle Crop
Codepen: Rectangle Crop + Crop info
Codepen: Rectangle With Aspect Crop and Max Init
Codepen: Rectangle + Aspect + Array Crop
Codepen: Rectangle + CSS Crop
Codepen: Different sizes

[C#] base64 圖存成圖檔


邏輯大致是將base64字串轉成byte陣列再轉成stream存起來


string x = files.Replace("data:image/png;base64,""");
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(x);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
 
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
image.Save(fileMapPath, System.Drawing.Imaging.ImageFormat.Png);

2016年11月10日 星期四

[JS] 解析QueryString


ex. http://localhost:10201/page.html?id=whatever

js取得方式


var parseQueryString = function () {
    var str = window.location.search;
    var objURL = {};
 
    str.replace(
        new RegExp("([^?=&]+)(=([^&]*))?", "g"),
        function ($0, $1, $2, $3) {
            objURL[$1] = $3;
        }
    );
    return objURL;
};


var params = parseQueryString();
 
console.log(params["id"]);

2016年11月1日 星期二

[Error] IIs佈版 無法載入指定的中繼資料資源


IIS 佈版時,因為改了連線字串,結果變成無法載入中繼資料資源
原因是因為使用ef6的連線字串, 如果改錯emdx的路徑,程式就會找不到中繼資料

結論 : webconfig 要小心確認,不要改錯QQ



[Error] EF6 違反多重性條件約束

 

如下圖, 最近遇到資料更新時,因為資料表互相關連,造成無法更新的錯誤

2016-11-01_151018

 

2016-11-01_151055

 

原因 : 我的狀態在於automapping時, 會把子model 的父層屬性一起mapping,造成ef6更新時就報掉,

因此後來將父層屬性ignore 不要一起mapping即可