MỚI NHẤT

Thứ Năm, 19 tháng 6, 2014

[ASP.NET] Đăng ký hosting miễn phí - Upload website ASP.NET lên host

Bạn đã xây dựng được 1 website ASP.NET chạy hoàn hảo trên localhost và muốn đưa nó lên mạng Internet để "show hàng" với nhiều người. Việc tìm được 1 máy chủ - hosting ASP miễn phí, chất lượng tốt, ổn định là khá khó thay vì đối với hosting PHP thì lại có rất nhiều hosting miễn phí.

Sau khi tìm nhiều hosting ASP miễn phí, mình thấy chỉ có SOMEE.COM là trang cho chúng ta đăng ký 1 host miễn phí, chất lượng tốt, chạy được cả webform và mô hình MVC, chạy MS SQL khá ổn định. Đặc biệt hosting này không hay bị "die host" - vấn đề rất thường gặp ở các hosting PHP. Nói chung đây là 1 hosting rất phù hợp với những newbie đang tập tẹ vào lập trình ASP.NET.

Bài này mình sẽ hướng dẫn các bạn tạo 1 website trên somee và cách upload code lên host.

1. Đăng ký tài khoản trên somee.com

- Để đăng ký web hosting .NET miễn phí bạn vào trang http://somee.com/. Trong mục FREE .NET HOSTING chọn Learn More như hình bên dưới.
 Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

Somee.com hỗ trợ ASP.NET từ phiên bản 1.1 đến 4.5, với 150MB bộ nhớ, 5GB băng thông hàng tháng, 15MB Microsoft SQL Server 2005, 2008 R2 hoặc 2012.

- Trong trang tiếp theo hiện ra. Click vào Order now như hình bên dưới để vào trang đăng ký.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Điền đầy đủ các thông tin đăng ký như hình dưới đây. Yêu cầu Email phải chính xác để xác minh tài khoản. Mục Zip/Postal code nhập 70000 nếu ở TP. HCM, các mục: Primary phone, Secondary phone, Fax number không cần nhập cũng được. Sau đó click Register new user and continue.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Trong trang mới hiện ra. Check vào 2 ô bên dưới. Sau đó Click Continue.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Ở trang mới hiện ra. Chúng ta thiết lập những thông tin cơ bạn như tên website trong mục Site name; Operating system chọn Windows server 2012, ASP.NET verson chọn 4.5. Site tile và Site Description do bạn tự đặt. Sau đó click vào Create website.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Trong trang tiếp theo hiện ra sẽ thông báo website của bạn đã được tạo thành công. Bạn click vào dòng Manage website để xem những thông tin cơ bản của webhosting somee miễn phí mà chúng ta vừa tạo.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Những lần sau, để truy cập vào panel điều khiển của webhosting vừa tạo. Ta vào trang somee.com rồi chọn CONTROL PANEL như hình dưới đây. Sau đó đăng nhập với đăng nhập và tài khoản vừa đăng ký. Ở đây bạn có thể thấy thông tin FTP, IP hãy lưu ý chỗ này để liên kết FTP về sau.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Như vậy vấn đề đăng ký ASP.NET webhosting miễn phí cơ bản hoàn tất. Và giờ chúng ta truy cập vào địa chỉ website mới vừa đăng ký. Ở ví dụ này là: http://www.nhatnghe.somee.com/. Và màn hình giao diện mặc định của website sau khi đăng kí như sau
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

2. Upload code lên host

- Nén tất cả code, resource, database của bạn vào 1 file .zip duy nhất để tiện cho việc upload

-  Trong màn hình quản trị control pannel của hosting, bên tay trái các bạn chọn File Manager, sau đó xoá trang Default.asp là trang mặc định của hosting đi. Các bạn xem hình bên dưới.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting

- Sau đó, bên tay phải ta chọn Upload, rồi tiến hành chọn file mà bạn vừa tải về được Upload lên hosting.
Đăng ký hosting miễn phí - Upload website ASP.NET lên hosting


Như vậy là bạn đã tạo được một trang web ASP.NET đơn giản trên 1 hosting miễn phí và đã up được code lên trên đó. 
Việc upload database, config website mình sẽ hướng dẫn trong 1 bài khác. 

Thân!

Nguồn tham khảo: doanweb, nhatnghe

Thứ Năm, 10 tháng 4, 2014

Giới thiệu ASP MVC - Hướng dẫn cơ bản để tạo một website ASP MVC đầu tiên (P2)

Trong bài Giới thiệu ASP MVC - Hướng dẫn cơ bản để tạo một website ASP MVC đầu tiên (P1) tôi đã giới thiệu với các bạn sơ qua về ASP.NET MVC và cách tạo một trang web MVC đơn giản. Trong phần 2 này tôi sẽ giúp bạn code 1 vài trang cho web site và 1 vài tiện ích liên quan tới MVC.

I. Tổ chức code MVC

Đầu tiên là trang chủ - trang hiển thị thông tin các sản phẩm. Vì yêu cầu trả về thông tin sản phẩm + loại sản phẩm, tức là lấy thông tin từ 2 bảng khác nhau vì thế ta khai báo thêm 1 class có các trường: ID, TenSP, TenLSP như sau:
public class Product
    {
        public int ID { get; set; }
        public string TenSP { get; set; }
        public string TenLoaiSP { get; set; }
    }
Trong DefaultController, để làm việc với DB Entity ta khai báo 1 biến toàn cục để sử dụng trong tất cả các Action:
SanPhamDB db = new SanPhamDB(); // SanPhamDB là tên Database, db là biến Entity
Controller thực hiện các câu lệnh và trả về kết quả cho browser thông qua View. Để có thể làm được điều đó ta phải khai báo 1 hàm có kiểu trả về là ActionResult (các hàm kiểu này có nhiều loại kiểu trả về, đọc tài liệu đính kèm để biết thêm chi tiết). Cụ thể với phần Index của dự án này (hiển thị thông tin sản phẩm, loại sản phẩm) có phần code như sau:
#region Trang chủ
        public ActionResult Index()
        {
            // Entity
            // LINQ
            // //Query syntax:
            var product = (from p in db.tbSanPhams select p).ToList(); // Biến danh sách chọn từ Database tbSanPham

            List<Product> prod = new List<Product>(); // Khai báo ‘prod’ là kiểu List các Product (Product là class khai báo ở trên)
            
            for (int i = 0; i < product.Count(); i++)
            {
                Product p = new Product();
                p.ID = product[i].Id;
                p.TenSP = product[i].TenSanPham;

                int type = product[i].LoaiSanPham; // Lấy ID loại sản phẩm của sản phẩm ‘i’ 

                // LInQ 
                // Method systax
                var p2 = (db.tbLoaiSanPhams.Where(p1 => type == p1.LoaiSanPham).Select(p1 => p1.TenLoaiSanPham)).ToList();
// Chọn tên loại sản phẩm từ bảng ‘tbLoaiSanPham’ với điều kiện ‘LoaiSanPham’ ở 2 bảng bằng nhau.

                p.TenLoaiSP = p2[0];
                prod.Add(p); // Thêm ‘p’ vào List ‘prod’
            }
            return View(prod);
        }
#endregion
Giao diện trang Index (hiển thị danh sách các sản phẩm)

Lưu ý:
  • Kiểu List() là kiểu danh sách tương tự như Array nhưng nó linh hoạt hơn Array: không cần phải khai báo số phần tử của mảng, có các hàm, thủ tục: Add, Sort
  • Có hai loại sử dụng cú pháp Entity (LINQ):
    Query syntax: Cú pháp la lá giống SQL
    Method systax: Cú pháp theo kiểu các class được khai báo sẵn: db.tb.Where(…).Select… Điểm chú ý là các biến của kiểu khai báo này không có sẵn, do đó ta phải khai báo chúng trực tiếp trong câu lệnh. Ví dụ: db.tbLoaiSanPhams.Where(p1 => type == p1.LoaiSanPham).Select(p1 => p1.TenLoaiSanPham). Trong đó khai báo biến là p1.
  • Còn #region #endregion chỉ đơn giản là tạo ra 1 khu vực với nhiệm vụ nhất định, trong này ta có thể khai báo nhiều hàm, thủ tục khác nhau. Sau này ta có thể thu gọn các khu vực này để code trông đơn giản, dễ nhìn hơn
Để trả về thông tin cho HTML ta phải sử dụng View().
View là phần hiển thị thông tin được sử lý dựa vào thông tin trả về từ Controller. View cũng tương tự như các trang HTML thông thường. View cũng có thể dùng các trang Master (như ASP Webform) hoặc Layout (ở Razor)
View phải có tên giống với tên hàm tương ứng ở Controller. Như trên ta phải tạo 1 view có tên là Index.aspx hoặc Index.cshtml
Để tạo view nhanh ta trỏ con trỏ đến tên hàm, ấn Ctrl M >> Ctrl V.

Lưu ý hàm trên trả về 1 giá trị là ’View(prod);

II. Cách trả dữ liệu về View để hiển thị ra trình duyệt

 1.  Trả về dưới dạng Dynamic Data tức là bằng ViewBag.<name> hoặc ViewData[“<name>”]; trong đó <name> là tên tùy ý do lập trình viên đặt (ta nên đặt chúng theo đúng quy cách, hạn chế các trường hợp đặc biệt…). Hai dạng này có chức năng, cách dùng tương tự nhau. Ở Controller gán giá trị cho chúng như 1 biến thông thường mà không cần phải khai báo
ViewBag.Sloaisp = “Hello”;
ViewData[“Sloaisp”] = “Hello”;
Ở View ta lấy các giá trị này như sau:
ASP: <%= ViewBag.Sloaisp %>   <%= ViewData[“Sloaisp”] %> 
Razor: @ViewBag.Sloaisp;  @ViewData[“Sloaisp”]

2.  Trả về dữ liệu có cấu trúc: 
Như hàm trên trả về 1 List giá trị có kiểu Product. View sẽ nhận List này rồi xử lý, trả về HTML tương ứng Cụ thể trong phần khai báo của aspx ta khai báo như sau:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/View.Master" Inherits="System.Web.Mvc.ViewPage<DEMOmvc.Models.Product>" %>
Trong phần thân ta lấy thông tin “prod” như sau:
<% foreach(var item in Model)
{ %><%= item.ID %>

<%= item.TenSP %>  

<%= item.TenLoaiSP %>  

<%= Html.ActionLink("Sửa", "Edit", new { ID = item.ID }) %> | <%= Html.ActionLink("Xóa", "Delete", new { ID = item.ID })%>

<% } %>

Với các trang Edit, Delete, New ta cũng thực hiện tương tự.




III. LinQ và làm việc với LinQ

          LinQ là một cách giao tiếp với CSDL. Nó giúp ta làm việc với CSDL một cách ra dễ dàng thông qua những hàm, thủ tục được khai báo sẵn. LinQ giúp ta dễ dàng trong việc sử dụng Bindding sau này.

Trong nội dung bài viết này tôi sẽ sử dụng LinQ và biến SanPhamDB db được khai báo ở trên.

- Thêm một bản ghi vào bảng:
tbSanPham SP = new tbSanPham(); // Khai báo class “SP” có kiểu tbSanpham  (tương ứng với tên bảng do Entity tự động tạo ra)

string TenSP = Fcollect["TenSP"]; // Lấy thông tin từ Form HTML chuyển vào, khi có hàm ActionResult phải nhận 1 tham số tương ứng: “FormCollection Fcollect”

int LoaiSP = int.Parse(Fcollect["LoaiSP"]);
SP.TenSanPham = TenSP; // Thêm thông tin vào biến SP
SP.LoaiSanPham = LoaiSP;
db.tbSanPhams.Add(SP); // Thếm biến SP vào List tbSanPhams
db.SaveChanges(); // Lưu lại

- Sửa bản ghi có Id = ID:
tbSanPham SP = db.tbSanPhams.First(m => m.Id == ID); // Lấy bản ghi đầu tiên có Id bằng ID truyền vào từ HTML (viết theo kiểu Method Syntax)

SP.TenSanPham = TenSP; // Sửa các thông tin lấy từ HTML
SP.LoaiSanPham = LoaiSP;
UpdateModel(SP);
db.SaveChanges();

- Xóa 1 bản ghi có Id = ID
tbSanPham SP = db.tbSanPhams.First(m => m.Id == ID);
db.tbSanPhams.Remove(SP);
db.SaveChanges();

Trên đây là các thao tác cơ bản để làm việc với LinQ, bạn có thể tham khảo.


IV. Rewrite URL trong MVC

        Các Controller, View đã được tạo vậy nó sẽ được map đến địa chỉ URL như thế nào???
Các thông tin về URL được quy định trong RouteConfig.cs trong thư mục App_Start. Trong hàm RegisterRoutes ta khai báo như sau:
routes.MapRoute(
                name: "Default1",
                url: "{action}/{ID}",
                defaults: new { controller = "Default", action = "Index", ID = 0 }
);
routes.MapRoute(
                name: "Default",
                url: "{action}.html",
                defaults: new { controller = "Default", action = "Index" }
);

Mỗi cái đăng ký Route có các tham số: Tên, địa chỉ URL, action và các tham số mặc định…
Bằng cách này bạn có thể tạo ra những địa chỉ "thân thiện" cho website của mình.

Chúc bạn thành công!

Thứ Tư, 9 tháng 4, 2014

Giới thiệu ASP MVC - Hướng dẫn cơ bản để tạo một website ASP MVC đầu tiên (P1)

I. Giới thiệu về ASP MVC

       Công nghệ MVC là một công nghệ mới ra cách đây 1 vài năm gì đấy… Nó không chỉ có trong ASP mà còn ở các ngôn ngữ lập trình khác: PHP, JSP… Công nghệ MVC mang lại cho coder một cách tổ chức code khoa học hơn, giúp soạn thảo mã nguồn nhanh hơn, dễ chỉnh sửa, chương trình chạy nhanh, hiệu quả hơn.


      MVC tức là Model, View, Control là 3 thành phần cơ bản của công nghệ. Cách thức tổ chức code được chia thành 3 bộ phận rõ rệt, mỗi bộ phận có 1 chức năng riêng. Cụ thể là:
  1.  Model chứa các file mã nguồn liên quan đến nhập, xuất dữ liệu, giao tiếp giữa cơ sở dữ liệu và chương trình. Các file trong Model có thể là các class mặc định của Visual tạo ra: ADO.NET Entity Database hoặc LINQ to SQL. Ngoài ra, lập trình viên cũng có thể thêm vào những class chứa thông tin phục vụ cho chức năng của chương trình
  2.      View chứa các file hiển thị chương trình, nó tiếp nhận thông tin từ Controller rồi trả về Browser mã HTML, JavaScript… Các file trong View có thể dựa trên cơ sở ASP (file *.aspx) hoặc dựa trên CSharp HTML (file *.cshtml). Về cơ bản 2 loại file này giống nhau về cách thức làm việc chúng chỉ khác nhau đôi chút về phần code. Với file ASPX thì cấu trúc hoàn toàn tương tự như trong Web Form cũng được xây dựng từ các file *.aspx và *.Master; có điều trong trường hợp này file *.aspx không lấy dữ liệu từ file *.aspx.cs tương ứng mà nó nhận giá trị trả về từ Controller. Còn loại cshtml thì cũng tương tự, được xây dựng từ các file *.cshtml và *.layout, cũng có chức năng như ASPX.
  3.       Control là thư mục chứa các file điều khiển Controller, nó nhận thông tin từ Form HTML, Model, Session, Cookie…, xử lý theo yêu cầu và trả về cho View để View hiển thị ra trình duyệt
ASP MVC còn tích hợp sẵn cách Rewrite URL (Router Manager) nhằm tạo ra các URL thân thiện.

II. Tạo website ASP MVC đầu tiên

        Giới thiệu là thế, bây giờ chúng ta sẽ băt tay vào thực hiện 1 dự án MVC cụ thể để thấy được cách thức hoạt động của các thành phần trong chương trình. Các bạn chỉ cần hiểu được chức năng, cách hoạt động của các thành phần trong chương trình này là có thể vận dụng chúng trong mọi dự án MVC khác. Dự án: Tạo 1 website để quản lý các sản phẩm Đầu vào: Database gồm 2 bảng
+ tbSanPham: chứa thông tin sản phẩm, gồm các trường Id (int identity), TenSanPham, LoaiSanPham (int) (chẳng hạn sản phẩm “Genius” có loại sản phẩm là “Chuột”, một loại sản phẩm có thể có nhiều sản phẩm)

+ tbLoaiSanPham: chứa thông tin loại sản phẩm, gồm các trường LoaiSanPham (int identity), TenLoaiSanPham



Yêu cầu:

-       Có các trang:

 + Hiển thị thông tin các sản phẩm cùng tên loại sản phẩm tương ứng

 + Thêm mới sản phẩm, loại sản phẩm

 + Chỉnh sửa sản phẩm


 + Xóa sản phẩm


Bây giờ chúng ta cùng bắt đầu vào công việc

     Mở Visual Studio, chọn New Project >> ASP.NET MVC 4 (với Visual 2013 là có MVC 5) 




-          Sửa sổ Solution Explore gồm các thư mục mặc định:
   
  Trong thư mục Controllers tạo 1 Controller với tên tùy ý + "Controller" (bắt buộc):

 t
         Trong thư mục Model tạo Model để giao tiếp với CSDL:

Có thể chọn kiểu ADO.NET Entity hoặc LINQ to SQL

Sau đó khai báo Connection String (đến SQL Express hoặc Server Local của Visual…)

Chọn các bảng cần thiết để add vào Model

Khi tạo xong thì trong Model có các file miêu tả các class, các method để làm việc với SQL. Chẳng hạn nó tự động sinh ra một namespace là: <Tên dự án>.Models
Trong đó có các class, các hàm thực thi:
<Database name> <Table> <Field>. Ví dụ: SanPhamDB > tbSanPham > TenSanPham, SanPhamDB db = new SanPhamDB();
<Database name> <Method> hoặc <Database name> <Table> <Method>. Ví dụ: db.tbSanPhams.Add(SP); db.SaveChanges(); Update(SP); db.tbSanPhams.Remove(SP);


Vậy là chúng ta đã tạo được 1 website MVC, trong phần tiếp theo tôi sẽ hướng dẫn các bạn code xử lý các sự kiện, và nhiều hơn nữa trong ASP.NET MVC.