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 31

Detectado un problema en la mañana,Ayer por la noche después de Synology NAS conjunto completo de permisos,Cuando el encuentro fue la reacción de hoy para abrir archivos en el NAS,Apariencia”nombre de directorio no es válido”error,Después de confirmar el permiso NAS ningún problema,Encontrar información en Internet,Han encontrado un internauta encontró la misma situación,Y parece ser la actualización de Windows 10 a ocurrir antes de 1709,Ver la computadora de mano,De hecho, 1709。

Continuar con la búsqueda »

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;
        }
    }
Jan 24
namespace WebApplication1.Models
{
    public class GuestbookDB
    {
        GuestbookEntities1 db = new GuestbookEntities1();
        //GuestbookEntities1: 資料庫,如一個公司別的資料庫

        public void Create(string name, string content)
        {
            Contents NewData = new Contents();
            //Contents: 資料庫底下的一個Table

            NewData.name = name;
            NewData.content = content;

            db.Contents.Add(NewData);
            db.SaveChanges();
        }
        public void Create(Contents NewData)
        {
            db.Contents.Add(NewData);
            db.SaveChanges();
        }
    }
}
Jan 21
--新增含有三個欄位的TABLE
CREATE TABLE COURSE(
CNAME NVARCHAR(128) PRIMARY KEY,
CREDIT INT,
TEACHER NVARCHAR(30)
)

=========================

--在既有TABLE新增一個欄位
ALTER TABLE SCORE
ADD NEWFILED VARCHAR(10)

--修改欄位形態
ALTER TABLE SCORE ALTER COLUMN NEWFILED INT

--刪除欄位
ALTER TABLE SCORE DROP COLUNN NEWFILD 

=========================

--刪除TABLE
DROP TABLE dbo.AVERAGE
Jan 21
SELECT * FROM SCORE
  WHERE COURSE = '物件導向程式設計'
  
SELECT * FROM SCORE
  WHERE COURSE LIKE '%程式設計%'
  
SELECT * FROM SCORE
  ORDER BY SCORE DESC
  
================================

--SQL註解1
/*SQL註解2*/

================================

--別名
SELECT S.COURSE FORM SCORE S

===============================

--合併表格 INNER JOIN
SELECT P.NAME, S.SID, S.SCORE, S.COURSE
  FROM SCORE S
  INNER JOIN STUDENT P ON S.SID = P.SID
  
--簡化寫法
SELECT P.NAME, S.SID, S.SCORE, S.COURSE
  FROM SCORE S, STUDENT P
  WHERE S.SID = P.SID
  
==================================

--LEFT OUTTER JOIN
SELECT P.NAME, S.SID, S.COURSE, S.SCORE
  FROM SCORE S, 
  LEFT OUTTER JOIN STUDENT P ON S.SID = P.PID

--RIGHT OUTTER JOIN
SELECT P.NAME, S.SID, S.COURSE, S.SCORE
  FROM SCORE S, 
  RIGHT OUTTER JOIN STUDENT P ON S.SID = P.PID
  
--FULL OUTTER JOIN
SELECT P.NAME, S.SID, S.COURSE, S.SCORE
  FROM SCORE S, 
  FULL OUTTER JOIN STUDENT P ON S.SID = P.PID
Jan 18
INSERT..()
  VALUE..()

INSERT SCORE (SID, COURSE, SCORE)
  VALUES ('S001', '程式設計', 86)

INSERT SCORE (SID, COURSE, SCORE)
  VALUES ('A003', '程式設計', 74)

由於各欄位不可為NULL,故語法可以省略為下:

INSERT SCORE
  VALUE ('S002', '演算法', 77)

INSERT SCORE
  VALUE ('S003', '演算法', 57)

===============

UPDATE..
  SET..=
  WHERE..=

UPDATE SCORE
  SET COURSE = '物件導向程式設計',
      SCORE = 95
  WHERE SID = 'S001'

=================

DELETE FROM..
  WHERE..=

DELETE FROM SCORE
  WHERE SID = 'S003'

=================

SELECT * FROM SCORE

SELECT SID AS '學號', COURSE AS '科目名稱', SCORE AS '分數" FROM SCORE
Jan 13

Jan 9
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;
using WebApplication1.Services;

namespace WebApplication1.Controllers
{
    public class MessageController : Controller
    {
        messageDBService data = new messageDBService(); //實作Services的物件 (其含有兩個方法:1.取得資料庫資料並回傳 2.接收資料並寫進資料庫)
        // GET: Message
        public ActionResult Index()             //執行Index檢視頁面 (首頁或索引頁面)
        {
            return View(data.GetData());        //將資料傳回View (使用方法1.)
        }

        public ActionResult Create()            //執行Create檢視頁面 (新增資料的頁面)
        {
            return View();
        }

        [HttpPost]                              //當瀏覽器發送HTTP POST請求才會執行
        public ActionResult Create(string Article_title, string Content)        //當使用Create這個Action且有帶參數時
        {
            data.DBCreate(Article_title, Content);      //把資料寫進資料庫 (使用方法2.)

            return RedirectToAction("Index");           //回到Index這個Action
        }
    }
}