Các bạn tạo 3 project tương ứng với 3 lớp: giao diện, xử lý, dữ liệu. Ở đây mình đặt tên tương ứng là GUI, BLL, DAL.

Video tạo mô hình ba lớp
Video xử lý thêm, xóa, sửa theo mô hình 3 lớp sử dụng Linq.
public List<nganh> getAll()
{
return connect.nganhs.ToList();
}
Lamda
public List<Sinhvien> thongTinSinhVien_TraVinh()
{
return db.Sinhviens.Where(sv => sv.DiaChi == "Trà Vinh").ToList();
}
Không theo lamda
public List<Sinhvien> thongTinSinhVien_TraVinh()
{
var data = from sv in db.Sinhviens
where sv.DiaChi == "Trà Vinh"
select sv;
return data.ToList();
}
public bool AddNganh(String ma_Nganh, String ten_Nganh)
{
nganh Ng = new nganh();
Ng.maNganh = ma_Nganh;
Ng.tenNganh = ten_Nganh;
connect.nganhs.InsertOnSubmit(Ng);
try
{
connect.SubmitChanges();
return true;
}
catch
{
return false;
}
}
public bool themLoaiSanPham(string maLoai, string tenLoai)
{
try
{
LOAIHANG lh = new LOAIHANG();
lh.MaLoai = maLoai;
lh.TenLoai = tenLoai;
db.LOAIHANGs.InsertOnSubmit(lh);
db.SubmitChanges();
return true;
} catch(Exception ex)
{
return false;
}
}
public nganh get_by_ma(String id)
{
return connect.nganhs.Where(Ng => Ng.maNganh == id).FirstOrDefault();
}
public List<LOAIHANG> timLoaiSanPhamTheoTen(string tuCanTim)
{
var data = from lh in db.LOAIHANGs
where lh.TenLoai.Contains(tuCanTim)
select lh;
return data.ToList();
}
public List<NHANVIEN> cau_26_tenNV_batDaua_luong_lon_hon_1000000()
{
var data = from nv in db.NHANVIENs
where (nv.Ten.StartsWith("a")) && nv.LuongCB > 1000000
select nv;
return data.ToList();
}
Bạn sử dụng hàm tìm kiếm để tìm record cần xóa nhé.
public bool xoa(String id)
{
nganh Ng = get_by_ma(id);
connect.nganhs.DeleteOnSubmit(Ng);
try
{
connect.SubmitChanges();
return true;
}
catch
{
return false;
}
}
public bool xoaLoaiSanPham(string maLoai)
{
try
{
LOAIHANG lh = db.LOAIHANGs.Single(x => x.MaLoai == maLoai);
db.LOAIHANGs.DeleteOnSubmit(lh);
db.SubmitChanges();
return true;
}
catch (Exception ex)
{
return false;
}
}
Cũng vậy, bạn sử dụng hàm tìm kiếm để tìm record cần sửa
public bool sua(String maNganh, String tenNganh)
{
nganh Ng = get_by_ma(maNganh);
Ng.maNganh = maNganh;
Ng.tenNganh = tenNganh;
try
{
connect.SubmitChanges();
return true;
}
catch
{
return false;
}
}
public bool suaLoaiSanPham(string maLoai, string tenLoai)
{
try
{
LOAIHANG lh = db.LOAIHANGs.Single(x => x.MaLoai == maLoai);
lh.TenLoai = tenLoai;
db.SubmitChanges();
return true;
}
catch (Exception ex)
{
return false;
}
}
public List<ketquathuctap> getLast()
{
return connect.ketquathuctaps.OrderByDescending(pc => pc.maPhieuCham).ToList();
}
public List<NHANVIEN> cau_12_sapGiamDanNhanVienTheoTenHo_TraVinh()
{
var data = from nv in db.NHANVIENs
where nv.DiaChi == "Trà Vinh"
orderby nv.Ho descending, nv.Ten descending
select nv;
return data.ToList();
}
// Tạo class mới chứa dữ liệu
public class Diem {
public string tenNguoiCham {get; set;}
public double diem {get; set;}
public string nhanXet { get; set; }
}
//Tạo mới đối tượng ở phần new ớ
public List<Diem> getAll(string maSV)
{
var kq =
from ketquathuctap in connect.ketquathuctaps
from nguoidung in connect.nguoidungs
from chitietdiem in connect.chitietdiems
where ketquathuctap.maPhieuCham == chitietdiem.maPhieuCham
where ketquathuctap.maNguoiCham == nguoidung.maNguoiDung
where ketquathuctap.maSV == maSV
select new Diem
{
tenNguoiCham = nguoidung.hoTen,
diem = chitietdiem.diem,
nhanXet = chitietdiem.nhanXet
};
return kq.ToList();
}
public ketquathuctap getByMaSVAndNHD(String maSV, String maNHD)
{
return connect.ketquathuctaps.Where(kq=> (kq.maSV == maSV) && (kq.maNguoiCham == maNHD)).FirstOrDefault();
}
public List<thongbao> getAllLimit5()
{
return connect.thongbaos.OrderByDescending(tb => tb.maThongBao).Take(5).ToList();
}
//Thêm vào csdl
public bool ThemPhieuCham(String diem, String nhanXet, DateTime ngayCham)
{
try
{
chitietdiem pc = new chitietdiem();
pc.diem = double.Parse(diem);
pc.nhanXet = nhanXet;
pc.ngayCham = ngayCham;
connect.chitietdiems.InsertOnSubmit(pc);
try
{
connect.SubmitChanges();
return true;
}
catch
{
return false;
}
}
catch
{
return false;
}
}
//Lấy ngày ra
public List<ThongTinThucTap> get_TTTT_cho_giang_vien(string maNguoiCham)
{
var kq =
from nguoidung in connect.nguoidungs
from thongtinthuctap in connect.thongtinthuctaps
where thongtinthuctap.maSinhVien == nguoidung.maNguoiDung
where thongtinthuctap.maGiangVien == maNguoiCham
select new ThongTinThucTap
{
maSV = thongtinthuctap.maSinhVien,
tenSV = nguoidung.hoTen,
ngayBatDauThucTap = thongtinthuctap.ngayBatDauThucTap.ToString()
};
return kq.ToList();
}
//Class ThongTinThucTap
public class ThongTinThucTap
{
public string maSV { get; set; }
public string tenSV { get; set; }
public string ngayBatDauThucTap { get; set; }
}
//Chỗ in ngày ra
ltr_phancongthuctap.Text += ((DateTime)item.ngayBatDauThucTap).ToString("dd/MM/yyyy") + @" </td>";
public List<ThongTinNhanVien> cau_3_thongTinNhanVien()
{
var data = from nv in db.NHANVIENs
select new ThongTinNhanVien()
{
hoTen = nv.Ho + " " + nv.Ten,
diaChi = nv.DiaChi,
namSinh = nv.NgaySinh.Value.Year
};
return data.ToList();
}
public List<LoaiHang_BaoNhieuSanPham> cau_14_LoaiHang_BaoNhieuSanPham()
{
var data = from sp in db.SANPHAMs
group sp by sp.MaLH into sp_n
select new
{
ma = sp_n.Key,
soLuong = sp_n.Count()
} into NewTable
from l in db.LOAIHANGs
where NewTable.ma == l.MaLoai
select new LoaiHang_BaoNhieuSanPham
{
ten = l.TenLoai,
soLuong = NewTable.soLuong
};
return data.ToList();
}
public List<TTNV_THU3> cau_19_thongtinNV_thu3()
{
var data = (from nv in db.NHANVIENs
select new TTNV_THU3()
{
maNV = nv.MaNV,
hoNV = nv.Ho,
tenNV = nv.Ten,
gioitinhNV = nv.GioiTinh,
ngaysinhNV = nv.NgaySinh,
diachiNV = nv.DiaChi
}).Skip(2);
return data.ToList();
}
Response.Redirect("../index.aspx");
Response.Write("abc");
//Đặt session
Session["ma"] = item.maNguoiDung;
Session["user"] = item.loaiUser;
Session["ten"] = "abc";
//Xóa session
Session.Remove("user");
Session.Remove("ma");
Response.Redirect("../index.aspx");
//kiểm tra giá trị session
if (Session["user"] == null && Session["user"] != "Admin")
{
Response.Redirect("../index.aspx");
}
Dùng để chèn code html vào thêm
ltr_table.Text += @"
<tr>
<td> " + i + @" </td>
<td> " + value.maNganh + @" </td>
<td> " + value.tenNganh + @" </td>
<td>
<div class='d-flex justify-content-center align-content-center'>
<a title='Sửa' href = 'sua-nganh.aspx?id_sua=" + value.maNganh + @"'><i class='fas fa-edit'></i></a>
<a style='padding-left:10px; color: red;' title='Xóa' href = 'quan-ly-nganh.aspx?id_xoa=" + value.maNganh + @"'><i class='fas fa-trash-alt'></i></a>
</div>
</td>
</tr>
";
//@ để xuống hàng nó vẫn nhận không bị lỗi
//Lấy giá trị string valuee = Request.QueryString["id"]; //Đặt đường dẫn <a title='Sửa' href = 'sua-nganh.aspx?id_sua=" + value.maNganh + @"'><i class='fas fa-edit'></i></a>
Sử dụng <% %>
<% Response.Write(Session["ten"].ToString()); %>

Lưu ý: Cần set các giá trị:
((09|03|07|08|05)+([0-9]{8})\b) //số điện thoại Việt Nam
^\d$ //chỉ nhập số
public static string getIpInternet()
{
try
{
using (System.Net.WebClient client = new System.Net.WebClient())
{
string ip = client.DownloadString("http://ipinfo.io/ip");
ip = ip.Replace("\r", "").Replace("\n", "");
return ip;
}
}
catch
{
return "127.0.0.1";
}
}
public string GetWebBrowserName()
{
string WebBrowserName = string.Empty;
try
{
WebBrowserName = HttpContext.Current.Request.Browser.Browser;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return WebBrowserName;
}
String hostname = Environment.MachineName;
Code mã hóa:
public string mahoa(string pass)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Trim(), "SHA1");
}
Password 123456 đã mã hóa sẽ như thế này:
7C4A8D09CA3762AF61E59520943DC26494F8941B
Bạn copy đoạn code sau vào:
bool CheckFileType(string fileName)
{
string ext = Path.GetExtension(fileName);
switch (ext.ToLower())
{
case ".gif":
return true;
case ".png":
return true;
case ".jpg":
return true;
case ".jpeg":
return true;
default:
return false;
}
}
Ở button bạn cần xử lý:
protected void btnUpload_Click(object sender, EventArgs e)
{
if (Page.IsValid && FileUpload1.HasFile && CheckFileType(FileUpload1.FileName))
{
string fileName = "images/" + DateTime.Now.ToString("ddMMyyyy_hhmmss_tt_") + FileUpload1.FileName;
string filePath = MapPath(fileName);
FileUpload1.SaveAs(filePath);
}
}
protected void btnUpload_Click(object sender, EventArgs e)
{
if (Page.IsValid && FileUpload1.HasFile && CheckFileType(FileUpload1.FileName))
{
string fileName = "images/" + DateTime.Now.ToString("ddMMyyyy_hhmmss_tt_") + FileUpload1.FileName;
string filePath = MapPath(fileName);
FileUpload1.SaveAs(filePath);
//Image1.ImageUrl = fileName;
SqlCommand cmd = new SqlCommand("insert into tblcauhoi(noidung,goiy,hinhanh) values(N'" + txtnoidung.Text + "',N'" + txtgoiy.Text + "','" + fileName + "')", kn.con);
kn.con.Open();
cmd.ExecuteNonQuery();
kn.con.Close();
Response.Write("<script>alert('Thanh cong')</script>");
}
}
Tạo một file aspx mới
protected void Page_Load(object sender, EventArgs e)
{
String path = Request.QueryString["path"];
string filename = "abc.txt";
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
Response.TransmitFile(Server.MapPath(path));
Response.End();
}
Đến đây bạn chỉ cần redirect hoặc href đến trang này và truyền thêm biến path vào đường dẫn
Literal1.Text += "<a href='" + "download.aspx?path=" + tb.Rows[i][1] + "' target='blank'>" + abc.txt + "</a> <br/>";
DataTable dt = new DataTable();
String sql = "select file_name from file_upload";
dt = connect.LayBang(sql);
string name_ = "du_lieu"; //Tên file excel mà bạn lưu về máy
//Tạo mới bảng để chép vào file excel
Table tb = new Table();
//Định dạng bảng
tb.BorderColor = System.Drawing.Color.FromName("red");
tb.CellPadding = 4;
tb.GridLines = GridLines.Both;
tb.CellSpacing = 0;
tb.Width = Unit.Percentage(100);
TableCell cell;
TableRow row;
int from = 0;
int to = dt.Rows.Count;
int header = 0;
for (int i = from; i < to; i++)
{
DataRow dr = dt.Rows[i];
if (header == 0)
{
row = new TableRow();
cell = new TableCell();
//so thu tu
cell.Height = 50;
cell.BackColor = System.Drawing.Color.FromName("orange");
cell.Width = 200;
cell.Text = "<b>FileName</b>";
cell.HorizontalAlign = HorizontalAlign.Center;
cell.VerticalAlign = VerticalAlign.Middle;
row.Cells.Add(cell);
tb.Rows.Add(row);
}
header++;
row = new TableRow();
cell = new TableCell();
//TenSanPham
cell = new TableCell();
cell.Height = 50;
cell.Text = dr[0].ToString();
cell.HorizontalAlign = HorizontalAlign.Left;
row.Cells.Add(cell);
row.Cells.Add(cell);
tb.Rows.Add(row);
}
Response.Clear();
Response.Buffer = true;
//excel
string ex_ = "xls";
Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + name_ + "." + ex_);
// Context.Response.AddHeader("Content-Length", strpath.Length.ToString());
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
tb.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
Xem thêm tại: https://expressmagazine.net/development/
protected void btnImport_Click(object sender, EventArgs e)
{
// CHECK IF A FILE HAS BEEN SELECTED.
if ((excelUpload.HasFile))
{
if (!Convert.IsDBNull(excelUpload.PostedFile) &
excelUpload.PostedFile.ContentLength > 0)
{
//FIRST, SAVE THE SELECTED FILE IN THE ROOT DIRECTORY.
excelUpload.SaveAs(Server.MapPath(".") + "\\excel\\" + excelUpload.FileName);
SqlBulkCopy oSqlBulk = null;
// SET A CONNECTION WITH THE EXCEL FILE.
string path = Server.MapPath(".") + "\\excel\\" + excelUpload.FileName;
string Extension = System.IO.Path.GetExtension(excelUpload.PostedFile.FileName);
string connStr = "";
if (Extension == ".XLS" || Extension == ".XLSX" || Extension == ".xls" || Extension == ".xlsx")
{
switch (Extension)
{
case ".xls": //Excel 97-03
connStr = "Provider=Microsoft.ACE.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
break;
case ".xlsx": //Excel 07
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
break;
}
}
OleDbConnection myExcelConn = new OleDbConnection(connStr);
try
{
myExcelConn.Open();
string sql = "SELECT * FROM [Sheet1$]";
using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, myExcelConn))
{
DataTable ds = new DataTable();
adaptor.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
for (int i = 1; i < ds.Rows.Count; i++)
{
string sql2 = "insert into file_upload(file_name) values('" + ds.Rows[i][0] + "')";
connect.CapnhatCSDL(sql2);
}
}
Response.Write("<script>alert('DATA IMPORTED SUCCESSFULLY.')</script>");
}
catch (Exception ex)
{
Response.Write("<script>alert('" + ex.Message + "')</script>");
}
finally
{
// CLEAR.
//oSqlBulk.Close();
oSqlBulk = null;
//myExcelConn.Close();
myExcelConn = null;
}
}
}
}
Code trên sẽ lưu file vào thư mục excel
Lưu ý:
Còn một bài viết về môn học sử dụng công nghệ này. Đó là bài viết Xây dựng phần mềm hướng đối tượng các bạn có thể tham khảo thêm nhé!