最近試著透過 ASP.NET Core 寫一個 AD 帳密修改的程式,架構上大致是先有個 AD 驗證及些密碼修改的 Web API,最後再寫一個桌面應用程式,讓使用者自行修改。這次完成的是帳密驗證的 Web API,程式如下:
Noviembre
21
Anteriormente, colegas informaron que la API del código QR de Google a veces no funcionaba.,Después de verificar la información relevante,Se me ocurrió la idea de aprender C# escribiendo esta API,Pasé algún tiempo explorando,Realmente lo saqué de ti。La función de esta API es ingresar un valor en la URL,Puede generar imágenes de QRCode directamente en el navegador,Lo siguiente se escribirá por primera vez en ASP.NET Core / Explicado desde la perspectiva de un novato en C#.。
Agosto
25
<%# Eval("SDate", "{0:yyyy/MM/dd}") %> // 0: 表示定義整個括號裡面的第 0 個變數要採用此日期格式。 // 以下為兩個變數的範例。 string s = String.Format("At {0}, the temperature is {1}°C.", DateTime.Now, 20.4); Console.WriteLine(s); // Output similar to: 'At 4/10/2015 9:29:41 AM, the temperature is 20.4°C.'
【參考連結】
- asp.net – cómo aplicar un FORMATO particular de fecha usando eval? – Desbordamiento de pila
- do# – Lo que hace el 0 en “{0:MM dd aaaa}” hacer? – Desbordamiento de pila
- Método String.Format (Sistema) | microsoft Docs
- Cadenas de formato de fecha y hora personalizadas | microsoft Docs
- Cadenas de formato de fecha y hora estándar | microsoft Docs
Febrero
22
//MVC3開始,新增Razer語法,不同於先前的<%...%>括號語法,使用At Sgin(@)敘述程式碼片段。 //在Razer檢視中,使用@*...*@進行程式註解。 //在程式碼中,要輸出內容,要加@或@(...) //在html標籤中,要輸出內容,要加@ //在程式碼中,要輸出純文字,要加@:
@if(true) { String strPrint = "這是測試輸出文字"; @strPrint<br/> <span>strPring</span><br /> <span>@strPrint</span><br /> } @{string strl = "測試";} @(strl)輸出文字<br /> @{ string strHtml1 = "<ul><li>項目一</li></ul>";} @Html.Raw(strHtml1)<br />
Febrero
5
//在測試Controller與View時,如果因為設中斷點導致網頁顯示不完整而無法進行測試, //可以試著點選"跳離函式(Shift+F11)",讓頁面完整顯示,以進行測試。 //先於Model設計好欄位變數等, //再於Controller設定執行時,透過剛設計的Model樣板,進行各個變數的處理(遞交資料) //如從網頁欄位A讀取資料到變數X,再把X送到網頁的欄位B //最後於View設計各欄位的顯示情形
Febrero
4
//Controllers\HomeController.cs public ActionResult Index() { TempData["Message"] = "修改此範本即可開始著手進行您的ASP.NET MVC應用程式。"; return View(); }
<!--Views\Home\Index.cshtml--> <h2>@TempData["Message"]</h2>
Febrero
3
//資料模型一對多關聯 public class Guestbook { public int Id { get; set; } public string Content { get; set; } public DateTime CreateTime { get; set; } public Member Member { get; set; } } public class Member { [Key] public string Username { get; set; } public string Password { get; set; } public string Name { get; set; } public string Email { get; set; } public ICollection<Guestbook> Guestbook { get; set; } } //Code First 就是在Model定義好各欄位後,其他的Controller、View都會自動幫你產生, //很神奇的功能,讓你專注在寫Model的部分就好
Jan
31
public class Index { [DisplayName("必選修")] //上面中括號這項非必要 public string Required { get; set; } /*name只能有一個,所以這兩段先註解掉 [Required(ErrorMessage = "學生姓名不得為空白")] public string Name { get; set; } [StringLength(10, ErrorMessage = "學生姓名不得超過10字元")] public string Name { get; set; } */ [StringLength(10, ErrorMessage = "學生姓名必須介於2-10字元", MinimumLength = 2)] public string Name { get; set; } [Range(0, 100, ErrorMessage = "得分必須介於0~100之間")] public int Point { get; set; } [System.Web.Mvc.Compare("re_password", ErrorMessage = "兩次密碼輸入不一致")] //上面沒有using System.Web.Mvc的話,這邊就要打完整的命名空間 public string Password { get; set; } public string Re_password { get; set; } [RegularExpression( @"^[0-9]{2,4}-?[0-9]{3,4}-?[0-9]{-4}$", ErrorMessage = "請輸入正確的電話號碼")] public string Phone { get; set; } [EmailAddress(ErrorMessage = "這不是E-mail格式")] public string Studentmail { get; set; } [Url(ErrorMessage = "這不是網址標準格式")] public string Url { get; set; } [FileExtensions(ErrorMessage = "所上傳的檔案不是圖片")] public string File { get; set; } [CreditCard(ErrorMessage = "這不是信用卡格式")] public string CreditCard { get; set; } [DataType(DataType.Date)] public string Date { get; set; } [Remote("RemoteTest", "Home", ErrorMessage = "Remote屬性測試")] public string For_Remote { get; set; } [MetadataType(typeof(ContentMetaData))] public partial class Content { private class ContentMetaData { [DisplayName("編號")] public int Id { get; set; } [DisplayName("姓名")] [Required(ErrorMessage = "請輸入性名")] [StringLength(10, ErrorMessage = "姓名不得超過10字元")] public string Name { get; set; } [DisplayName("內容")] [Required(ErrorMessage = "請輸入內容")] public string Content { get; set; } } } }
Jan
30
public class Index { [DisplayName("必選修")] public string required { get; set; } /*name只能有一個,所以這兩段先註解掉 [Required(ErrorMessage = "學生姓名不得為空白")] public string name { get; set; } [StringLength(10, ErrorMessage = "學生姓名不得超過10字元")] public string name { get; set; } */ [StringLength(10, ErrorMessage = "學生姓名必須介於2-10字元", MinimumLength = 2)] public string name { get; set; } [Range(0, 100, ErrorMessage = "得分必須介於0~100之間")] public int point { get; set; } [System.Web.Mvc.Compare("re_password", ErrorMessage = "兩次密碼輸入不一致")] //上面沒有using System.Web.Mvc,所以這邊就要打完整的命名空間 public string password { get; set; } public string re_password { get; set; } [RegularExpression( @"^[0-9]{2,4}-?[0-9]{3,4}-?[0-9]{-4}$", ErrorMessage = "請輸入正確的電話號碼")] public string phone { get; set; } [EmailAddress(ErrorMessage = "這不是E-mail格式")] public string studentmail { get; set; } [Url(ErrorMessage = "這不是網址標準格式")] public string url { get; set; } }
Jan
29
public class GuestbookDB { GuestbookEntities1 db = new GuestbookEntities1(); //GuestbookEntities1: 資料庫,如一個公司別的資料庫 //新增一筆資料 public void Create(string name, string content) { Contents NewData = new Contents(); //Contents: 資料庫底下的一個Table //因db.Table.Add需要寫入完整的table,所以要先產生一個Content的物件,接收各欄位的值後,再回寫至DB //如果接收到是完整的table,就用下一個方法,直接add到DB即可 NewData.name = name; NewData.content = content; db.Contents.Add(NewData); db.SaveChanges(); } public void Create(Contents NewData) { db.Contents.Add(NewData); //Add語法似乎是資料庫(db)專用語法,所以不可以省略db,而直接用Table的Contenes.Add db.SaveChanges(); } //修改資料 public bool Update(int id, string name, string content) { //撈資料 Contents Data = db.Contents.Find(id); //不同於Create有在記憶體先產生一個物件,這邊可以直接把Data指到資料庫的位置去做修改 //判斷是否有資料 if (Data != null) { //修改資料的值 Data.name = name; Data.content = content; //儲存資料變更 db.SaveChanges(); return true; //對應到method宣告的會回傳bool值 } else { return false; } } public bool Update(Contents UpdateData) { Contents Data = db.Contents.Find(UpdateData.Id); if (Data != null) { Data.name = UpdateData.name; Data.content = UpdateData.content; //之後可以試試直接Data=UpdateData看看 db.SaveChanges(); return true; } else { return false; } } public bool Delete(int id) { Contents DeleteData = db.Contents.Find(id); if (DeleteData != null) { db.Contents.Remove(DeleteData); db.SaveChanges(); return true; } else { return false; } } //取得所有資料 public List<Contents> GetList() { //取得Contents的資料,並轉成List List<Contents> ContentList = db.Contents.ToList(); return ContentList; } //取得單一筆資料 public Contents GetContents(int id) { Contents Data = db.Contents.Find(id); return Data; } }