2020年7月3日 星期五

.Net Core Razor decimal 去除後面多於小數點

<input type="number" asp-for="@Model[i].Field" class="form-control text-right" required step="1" asp-format="{0:0.#}" >
自己筆記一下

2020年4月24日 星期五

.Net Core One Form MultipeSubmit with ajax

之前一個from多按鈕作法在網路上很多
MultipleButtonAttribute<=之前都用這個方式可Google就有了
使用.Net Core時單純的直接submit的話一般方法都可以
目前使用jquery.unobtrusive-ajax來做的話都送不到後端
但用習慣了還是想繼續用下去
試過了很多方法最後找到一篇文章經測試後可以使用
Html部分如下跟之前一樣只是沒特別指定asp-controller and asp-action
 
<form data-ajax-begin="OnBegin" data-ajax-complete="OnComplete" data-ajax-method="post" data-ajax-success="OnSuccess" data-ajax="true" id="from1" method="post">
<div class="form-group">
<button class="btn btn-primary" id="Edit" type="submit">編輯</button>
      <button class="btn btn-danger" id="Delete" type="submit">刪除</button>          
   </div>
</form>
javascript部分使用jquery在按鈕點擊後加上data-ajax-url的url
這是這次的重點部分
 

     
後端部分宣告兩個ActionResult來接收即可
 
[HttpPost]
[ValidateAntiForgeryToken]       
public IActionResult Edit()
{
    ResultViewModel result = new ResultViewModel();
    return Json(result);
}

[HttpPost,ActionName("Delete")]
[ValidateAntiForgeryToken]     
public IActionResult DeleteConfirmed()
{
     ResultViewModel result = new ResultViewModel();
return Json(result);
}
個人覺得這樣寫程式有點不好看
但目前好像就只有這方法可行
歡迎有更好方法可以提供謝謝
參考網址:
jQuery Unobtrusive Ajax Helpers in ASP.NET Core
Multiple Submit Buttons

2020年3月12日 星期四

c# 基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。

公司將一些網站改走SSL後發現有些POST取資料功能失效了
出現基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係
解法辦法

 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;<=加入
 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;<=加入

參考來源:
[faq]解決C#呼叫有ssl憑證問題的網站出現遠端憑證是無效的錯誤問題
C# HttpReques 基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係 強制跳過 TLS驗證
C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉

2020年1月16日 星期四

Blazor 好用Component

Blazor 已經跟Angular一樣都是用Component
雖然jQuery部分還是可以是使用
但jQuery UI部分在使用上可能無法那麼順利
所以目前可能真的要走向Blazor Component方式
以下目前覺得好用的Component
如果您有不錯的可以提供謝謝

AutoComplete
Typeahead

DatePicker
BlazorDateRangePicker

Verification(自訂驗證比設定在model class來的彈性)
Integrating FluentValidation with Blazor

Pagination(我是參考以下三篇做成一個自己需要的Pagination Component)
Blazor.Pagination
Building Blazor shared pager component
8 - Blazor - Pagination with ASP.NET Core, Entity Framework Core and Blazor

Sortable(參考下篇應該就能做出了)
Exploring Blazor by Making An HTML Table Sortable in .NET Core

Third Party(可能需要付費)
Telerik
Syncfusion
Radzen
matblazor.com
Blazorise
如果有需要可以自行決定


參考
ASP.NET Core Blazor JavaScript interop

2019年12月30日 星期一

.Net Core 問題6 Scaffold-DbContext Build failed.

承接問題4.Net Core 問題4 DB First
剛發現Build failed
如過自行修改了Scaffold-DbContext所產生的class很容易遇到
目前我是三層式架構所以有多專案在一個方案裡面
測試了兩三次
先將其他專案都移除後再執行Scaffold-DbContext
就可以順利產生class之後再將其他專案加回來
有更好辦法也可提供

2019年12月20日 星期五

.Net Core 問題5 3.0以上版本分頁問題

今天寫了Blazor的Sample專案測試到了分頁時
 stafflist = await this._staffService.GetAll().Skip(1).Take(1).ToListAsync();

出現了下列錯誤
SqlException: 接近 'OFFSET' 之處的語法不正確。 FETCH 陳述式中的選項 NEXT 使用方式無效。 context
後來找到一堆方法
ervices.AddDbContext(options => options.UseSqlServer(ConnectionString));
改成
services.AddDbContext(options => options.UseSqlServer(ConnectionString,build =>build.UseRowNumberForPaging()));
很好一樣出錯,後來找到了原因,目前使用的資料庫是SQL Server 2008R2
微軟提到了已移除 UseRowNumberForPaging 目前可能只有兩條路
1.升級SQL Server
2.降低.Net Core版本
3.Dapper或其他可直接下SQL語法

2019年12月9日 星期一

.Net Core 問題4 DB First

必須安裝下列安裝(套件管理主控台)
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.0
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design -Version 1.1.6
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.0
//第一次乾淨時
Scaffold-DbContext "Server=192.168.0.1;Database=Sample;user id=sa;password=1234567;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Project sample.model
//有更新時
Scaffold-DbContext "Server=192.168.0.1;Database=Sample;user id=sa;password=1234567;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Project sample.model -Force
//需與原資料庫同檔名時
Scaffold-DbContext "Server=192.168.0.1;Database=Sample;user id=sa;password=1234567;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Project sample.model -use-database-names

常遇到Build failed或是直接沒反應

2019年11月21日 星期四

.Net Core 問題3 如何發佈到IIS

.Net Core最有價值的就是跨平台
不用再依附於.net framework 發佈時
以下依需求選擇
1.可選擇.net core版本
2.與Framework相依或獨立
3.發佈到linux osx win

發佈到IIS上其實跟原本設定的方式都一樣
但須特別安裝 .NET Core RunTime.Net Core Windows Server Hosting

發佈到linux可參考官網Linux 上 .NET Core 的必要條件
發佈到Max可參考官網macOS 上 .NET Core 的先決條件

如果程式發佈是winX64時在IIS上啟用32位元則要關掉
否則可能出現,HTTP Error 500.32 - ANCM Failed to Load dll 的錯誤

參考
IIS - 運行 ASP.NET Core 網站
[ASP.net Core] 部署 ASP.net Core 到 IIS 個人踩雷合集

.Net Core 問題2 Visual Studio如何安裝JS/CSS套件問題

開了一個.Net Core 3.0專案後,
習慣性的想要安裝常用必備的套件打開Nugut套件管理員 > 套件管理主控台,
然後貼上常用的語法按Enter跑完了!!
發現疑!!怎麼js都沒安裝,
看了一下內容完全沒有任何.js的文件進來,
找了一篇文章如下參考有寫到可使用Bower,
找一下Bower發現暗黑執行序有文章寫到Bower被放生了,
多了一個Library Manager,使用起來是蠻簡單的。
專案上右鍵 > 加入 > 用戶端程式庫 > 提供者、程式庫輸入條件安裝即可

參考

2019年11月18日 星期一

.Net Core 問題1 .Net Core 3.0 WinForm 無設計畫面

看完了ASP.NET Core 值得學嗎?發覺.net Core的確有學習的必要,
於是先用winform來試試,沒想到發現居然沒設計畫面,
在網路上找到已經有擴充套件及影片C# Tutorial - NET Core 3.0 WinForms Designer | FoxLearn
套件頁面:WINDOWS FORMS: .NET CORE WINDOWS FORMS DESIGNER
使用方法:下載安裝套件,重開VS2019即可
目前尚未遇到有出問題
 參考:
C# Tutorial - NET Core 3.0 WinForms Designer | FoxLearn

2019年9月26日 星期四

c# 日期區間小撇步

通常會開兩個欄位,
一個是日期起,
一個是日期迄,
如何查詢區間內的資料?

舉例:
想知道2019-09-01到2019-09-30之前有哪些人在職
稍微畫個圖後有了靈感
((到職日期 <= 2019-09-30 && 離職日期 >= 2019-09-30)  || (離職日期 =null ))
會就在這個區間