รวมคำสั่ง C# ที่ใช้บ่อยสุด สามารถก็อปโค๊ดไปใช้เพื่อเพิ่มความเร็วในการทำงาน
C# กำหนดให้แสดงเป็นปี ค.ศ. หรือ พ.ศ.
สำคัญมาก หากต้องการเขียนโปรแกรมให้ทำงานกับวันที่
1. ใส่ Namespace
@using System.Globalization;
2. กำหนดให้แสดงปี ค.ศ จะได้ Output: 08/08/2022
string CurDateOnly = DateTime.Now.ToString("MM/dd/yyyy", new CultureInfo("en-EN"));
3. กำหนดให้แสดงปี พ.ศ จะได้ Output: 08/08/2565
string CurDateOnly = DateTime.Now.ToString("MM/dd/yyyy", new CultureInfo("th-TH"));
Modal สำหรับ ใช้ทำตัวเลื่อนหน้า Pagination
public class ListPaginationData { public int TotalRow { get; set; } public int TotalPage { get; set; } }
วิธีระบุ Layout เองผ่าน Controller
return View("index", "_LayoutCustom");
การทำ Query Builder ใน C# ที่ดี และง่ายที่สุด
using System.Linq; using System.Web; using System.Collections.Specialized; public string ToQueryString(NameValueCollection nvc) { var array = ( from key in nvc.AllKeys from value in nvc.GetValues(key) select string.Format( "{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(value)) ).ToArray(); return string.Join("&", array); }
การทำ Curl Post ใน C# ทดสอบแล้ว 100%
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net; using System.Text; using System.IO; public class DataServices { public string PostData(string filename, string query) { string jsonData = ""; var url = "http://localhost/www.tooktee.com/html5/apps/"+ filename; var httpRequest = (HttpWebRequest)WebRequest.Create(url); httpRequest.Method = "POST"; httpRequest.ContentType = "application/x-www-form-urlencoded"; var data = query; // "param1=value1¶m2=value2"; using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream())) { streamWriter.Write(data); } var httpResponse = (HttpWebResponse)httpRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { jsonData = streamReader.ReadToEnd(); } //Console.WriteLine(httpResponse.StatusCode); return jsonData; } }
การใช้ ViewData ส่งข้อมูลจากหน้าหลักไปหน้าแยก Html.Partial() สามารถส่งได้หลายค่า
การส่งค่า Html.Partial( "sample.cshtml", new ViewDataDictionary { { "Name1", "Value1" }, { "Name2", "Value2" } } ) การรับค่า sample.cshtml ViewData["Name1"] ViewData["Name2"]
การใช้ต้องแปลงค่าตามประเภทของข้อมูลที่ส่งผ่าน ViewData เช่น
bool IsUser = false; if(ViewData["IsUser"] !=null) { IsUser = (bool)ViewData["IsUser"]; }
โหลดข้อมูล AppSettings จาก Web.config
@System.Configuration.ConfigurationManager.AppSettings["myKey"];
กำหนดค่าวันที่เริ่มต้นด้วย C# ใช้กรณีใส่ค่าในตัวแปรที่กำหนดเป็นชนิด DateTime
DateTime.MinValue //Output: 1970-01-01 07:00:00
URL Encode ด้วย C# ใช้ตอนทำ Redirect หน้าพร้อม Query ไม่เพี้ยน
รับค่าจาก URL
string url = Request.Url.PathAndQuery;
จากนั้นใช้ HttpUtility.UrlEncode
string repath = "/login?repath=" + HttpUtility.UrlEncode( url );
การจัดฟอร์แมตเบอร์โทรให้ดูสวยงาม
@String.Format("{0:0##-###-####}", Convert.ToInt32(Model.TelephoneNumber))
ฟอร์แมตตัวเลขเป็นสกุลเงินบาทด้วย C#
string.Format("{0:C2}", 1212); //output: ฿1,212
ฟอร์แมตตัวเลขใส่คอมม่าด้วย C#
string.Format("{0:n0}", 1212); //output: 1,212
การแสดง TEXT ในบล็อก C# เช่น เขียนบล็อก @if ในภายในฟังค์ชั่น Javascript
1. ใช้แท็ก < text > function() < /text> ครอบไว้ เพื่อไม่ให้ C# ตีค่าเป็นตัวแปรแล้วเกิด Error
2. ใช้ @:ตามด้วยค่าทีต้องการเช่น Json หรือ function() เพื่อไม่ให้ C# ตีค่าเป็นตัวแปรแล้วเกิด Error
การรับวันที่ปัจจุบัน C#
@using System.Globalization; //Eng DateTime.Now.ToString("dd/MM/yyyy", new CultureInfo("en-US")); //Output: 08/02/2021 //Thai DateTime.Now.ToString("dd/MM/yyyy", new CultureInfo("th-TH")); //Output: 08/02/2565
C# ตรวจสอบเป็นมือถือ หรือ PC มีประโยชน์ตรงทำให้เว็บรองรับหน้าจอขนาดเล็ก และขนาดใหญ่
Request.Browser.IsMobileDevice
C# การรับค่า URL หน้าปัจจุบัน
string query = Request.Url.PathAndQuery
// /mysite/page.aspx?p1=1&p2=2
string url = Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx
string path = Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx
string host = Request.Url.Host;
// localhost
string port = Request.Url.Authority
// localhost:8080
string appPath = Request.ApplicationPath
// /mysite
string rawUrl = Request.RawUrl
// /mysite/page.aspx?p1=1&p2=2
C# การส่งผ่านค่า Array ไปแสดง View ด้วย List (เทคนิคขั้นสูงที่ได้ใช้บ่อย นิยมใช้กับ API)
สร้าง Models เพื่อรับค่า
public class ContentData
{
public int Id { get; set; }
public string Subject { get; set; }
public string Description { get; set; }
public string DateString { get; set; }
public string ImageUrl { get; set; }
public string LinkTo { get; set; }}
สร้าง Controller เพื่อใส่ค่า (ใช้ JsonConvert ของ Json.NET ติดตั้งผ่าน Nuget ของ Visual Studio)
List contentLocation;
AgentNewDataServices aService = new AgentNewDataServices();
//use API
string contentFilename = "HomeService/__modal_ContentData.php";
string contentData = aService.ReadData(contentFilename);
contentLocation = JsonConvert.DeserializeObject(contentData);
ViewData["contentLocation"] = contentLocation;
สร้าง View เพื่อแสดงข้อมูล
@foreach (var item in (List)ViewData["contentLocation"])
{
@item.Id
@item.Subject
@item.Description
@item.DateString
@item.ImageUrl
}
c# ใส่ CSS และ Javascript โดยวางไว้ตรงไหนก็ได้แล้ว c# จะนำมารวมให้อัตโนมัติ
1. โฟลเดอร์ VIEWS เช่น ไฟล์ชื่อ x.cshtml ใส่แท็กนี้ครอบ style ไว้
@section styles{
//css style
}
@section scripts{
//javascript
}
2. โฟลเดอร์ VIEWS/SHARED เช่น ไฟล์ชื่อ Layout.cshtml ใส่แท็ก Render แล้ว C# จะนำ Style และ Javascript ในหน้าอื่น ๆ มารวมกัน
หมายเหตุ: หากคุณใช้ section ในข้อมูล 1 คุณจำเป็นต้องใส่ RenderSection ใน Layout ด้วย เพื่อไม่ให้เกิด Error
@RenderSection("styles", required: false)
@RenderSection("scripts", required: false)
C# ดึงหน้าที่ต้องการมารวมกัน (คล้าย Include ของ PHP)
@Html.Partial("~/Views/Project/_ProjectMap.cshtml", Model)
ดึง URL จาก Address Bar มาแสดง
@HttpContext.Current.Request.Url.AbsoluteUri
ตรวจสอบ Browser เป็น PC หรือ Mobile (มีประโยชน์ตรงทำให้ง่ายต่อการแยกเมนู PC กับมือถือ)
@if (Request.Browser.Platform == "WinNT")
{//PC Browsers
}
else {//Mobile Browsers
}
อ่านเนื้อหาไฟล์บน Server เดียวกัน
private static string ReadHtmlTemplate( string filename ) { string emailtmp = ""; try { string path = FileHelper.GetFileFullPath( HttpContext.Current.Server.MapPath( "/EmailTemplate/" + filename ) ); using( StreamReader sr = new StreamReader( path ) ) { // Read the stream to a string, and write the string to the console. emailtmp = sr.ReadToEnd(); // Console.WriteLine(line); } } catch ( Exception ex ) { DalBase.ExceptEngine.KeepLogOnly( CSystems.ProcessID, ex ); } return emailtmp; }
Session กำหนดเวลาหมดอายุ
https://stackoverflow.com/questions/1205828/how-to-set-session-timeout-in-web-config
แสดงทศนิยม 2 ระบบ
Math.Round(Number, 2);
ที่มา
https://stackoverflow.com/questions/257005/how-do-you-round-a-number-to-two-decimal-places-in-c
การแสดงผลตัวร่วมกับ HTML ให้เติม @ ด้านหน้า
เช่นทำงานแบบบล็อก
@{
//do
}
หรือบรรทัดเดียว
รับค่าพารามิเตอร์จาก URL
Request.Params["login"]
กระโดดไปหน้าที่ต้องการ
Response.Redirect("~/HOME/NoResults");
ศึกษาคำสั่ง C# ได้จากลิงค์นี้:
1. LINQ
2. Optional Parameters
3. Read-only auto-properties
4. Expression-bodied function members
5. Null-conditional operators
6. String interpolation
7. Switch Expression
8. Null-Coalescing Assignment
“My Top 8 Favorite C# Features”