Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Tạo menu load csdl trên template MVC3 razor

  1. #1
    Ngày gia nhập
    04 2012
    Nơi ở
    Ha Noi
    Bài viết
    149

    Mặc định Tạo menu load csdl trên template MVC3 razor

    như các bạn đã biết.trên trang template của mvc không có file cs kèm theo như web form nên để load dữ liệu ta phải làm theo cách khác.

    database:
    Code:
    create table DanhMucSanPham(
    MaDanhMucSanPham int identity(1,1) primary key,
    TenDanhMucSanPham nvarchar(50) not null,
    MoTaTenDanhMucSanPham varchar(50),
    )
    go
    create table LoaiSanpham(
    MaLoaiSanPham int identity(1,1) primary key,
    MaDanhMucSanPham int references DanhMucSanPham(MaDanhMucSanPham) not null,
    TenLoaiSanPham nvarchar(50) not null,
    MoTaTenloaiSanPham varchar(50),
    )
    giờ ta muốn load menu các danh mục sản phẩm từ database và bên trong mỗi thư mục lại có các loại sản phẩm có khóa liên kết với danh mục sản phẩm.

    models cho template có cấu trúc khác với các model cho controllers
    Code:
    public class Template
        {
            public static List<DanhMucSanPham> danhmucsanpham = load_dmsp();
            public static List<LoaiSanpham> loaisanpham = load_lsp();
            static List<DanhMucSanPham> load_dmsp()
            {
                KanTasEntities db = new KanTasEntities();
                var data = (from d in db.DanhMucSanPham
                             select d).ToList();
                if (data.Count>0)
                {
                    return data;
                }
                return  null;
            }
            static List<LoaiSanpham> load_lsp()
            {
                KanTasEntities db = new KanTasEntities();
                var data = (from d in db.LoaiSanpham
                            select d).ToList();
                if (data.Count > 0)
                {
                    return data;
                }
                return null;
            }
        }
    controllers? template thì làm gì có controllers
    Views ->Shared-> _Template.cshtml
    Code:
    @using Kanta.Models
    <!DOCTYPE html>
    <html>
    <head>
    ...
    
    ...
    <ul id="nav">
                        @if(Template.danhmucsanpham!=null)
                        {
                            foreach (var item1 in Template.danhmucsanpham)
                            {
                                <li><a href="#">@item1.TenDanhMucSanPham</a>
                                    @if (Template.loaisanpham != null)
                                    {
                                        <ul>
                                            @foreach (var item2 in Template.loaisanpham)
                                            {
                                                if (item2.MaDanhMucSanPham == item1.MaDanhMucSanPham)
                                                {
                                                    <li>@Html.RouteLink(item2.TenLoaiSanPham, "SanPham", new {controller="SanPham", Action="DanhSachSanPham", dmsp =item2.DanhMucSanPham.MoTaTenDanhMucSanPham, lsp=item2.MoTaTenloaiSanPham, id=item2.MaLoaiSanPham})</li>
                                                }
                                            }
                                        </ul>
                                    }
                                </li>
                            }
                        }
                    </ul>
    ...
    ảnh demo


  2. #2
    Ngày gia nhập
    04 2012
    Nơi ở
    Ha Noi
    Bài viết
    149

    ưu điểm của dùng model static này là việc load menu giống như session vậy.load một lần nếu ta chưa thoát hẳn một tiến trình(tắt hết các tab trang đó).vậy sẽ giúp cho việc truy xuất tới csdl ít đi
    nhược điểm là nếu bạn vừa add thêm một danh mục thì nó sẽ không update ngay mà khi người dùng thoát hết vào lại mới update.
    cách thứ 2 là bạn dùng jquery hoặc ajax load jones đến một controllers nào đó để load dữ liệu.nhưng thao tác trên javascrip chắc hẳn sẽ khó sử lý hơn rồi.
    ai có ý kiến gì góp ý nha!thank

    đã có một cách khác tối ưu hơn hẳn cách trên rồi.dùng PartialPage.
    demo

    - controler
    Code:
    [ChildActionOnly]//muon goi tu view sang controll thi phai co cai nay nhe.dung them [httpget] vao nhe
    public ActionResult ViewProfile(String ac)
            {
                if (ac != null)
                {
                    RecruitmentEntities db = new RecruitmentEntities();
                    var data = (from d1 in db.Profile
                                join d2 in db.Account on d1.IDAcount equals d2.IDAcount
                                where d2.NameAcc.Equals(ac)
                                select d1).ToList();
                    if (data.Count > 0)
                    {
                        ViewBag.data = data[0];
                        return PartialView("_Profile");
                    }
                    ViewBag.mess = "Không tìm thấy thông tin tài khoản này";
                    return View("Error");
                }
                return View("Error");
            }
    trang view _profile
    Code:
    <div>
            @if(ViewBag.data!=null)
            {
                @:Name: @ViewBag.data.Name <br/>
                @:Age: @ViewBag.data.Age <br/>
                @:Brithday: @ViewBag.data.Brithday <br/>
                @:Phone: @ViewBag.data.Phone<br/>
                @:Address @ViewBag.data.Address <br/>
                @:Email: @ViewBag.data.Email <br />
                @:Sex: @ViewBag.data.Sex <br>
                
            }
    </div>
    bên template gọi

    view template
    Code:
    @Html.Action("ViewProfile","Partial",new{ac =Session["Login"].ToString()})

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    1

    Mặc định Bài viết rất hay.

    Bạn có thể Demo được không?
    Có Demo sẽ dễ hiểu hơn.

  4. #4
    Ngày gia nhập
    05 2012
    Bài viết
    13

    bạn nào demo di. mình cũng đang bí chỗ này. load ra cái menu da cấp thì càng tốt

  5. #5
    Ngày gia nhập
    07 2012
    Bài viết
    7

    thấy cách các bác làm khá hay, em cũng đang học MVC3, bác có demo post lên cho anh em cùng vọc nha.
    Tổng đài đăng lý lắp đặt Mạng FPT miễn phí toàn quốc - Nếu bạn đang cần dịch vụ đăng tin sản phẩm hãy liên hệ với chúng tôi

  6. #6
    Ngày gia nhập
    04 2012
    Nơi ở
    Ha Noi
    Bài viết
    149

    Mặc định trả lời

    share: _Layout.cshtml (template)
    Code:
    Code:
    <div id="conten">
                @Html.Action("Menu","Home") @*hoặc @{Html.RenderAction("Menu","Home");}*@
                @this.RenderBody()
            </div>
    controller: HomeController.cs
    Code:
    Code:
    [ChildActionOnly]//muon goi tu view sang controll thi phai co cai nay nhe.dung them [httpget] vao nhe
    public ActionResult Menu()
            {
                CMSEntities db = new CMSEntities();
                List<Menu> menu= db.Menus..ToList();
                return this.PartialView("_Menu", menu);
            }

  7. #7
    Ngày gia nhập
    12 2011
    Nơi ở
    vùng kín
    Bài viết
    139

    Trích dẫn Nguyên bản được gửi bởi ducnv_b01048 Xem bài viết
    share: _Layout.cshtml (template)
    Code:
    Code:
    <div id="conten">
                @Html.Action("Menu","Home") @*hoặc @{Html.RenderAction("Menu","Home");}*@
                @this.RenderBody()
            </div>
    controller: HomeController.cs
    Code:
    Code:
    [ChildActionOnly]//muon goi tu view sang controll thi phai co cai nay nhe.dung them [httpget] vao nhe
    public ActionResult Menu()
            {
                CMSEntities db = new CMSEntities();
                List<Menu> menu= db.Menus..ToList();
                return this.PartialView("_Menu", menu);
            }
    bạn ơi thế mình muốn load menu 2 tầng hoặc hơn thì mình làm như thế nào ?

  8. #8
    Ngày gia nhập
    04 2012
    Nơi ở
    Ha Noi
    Bài viết
    149

    Mặc định trả lời

    mình chỉ gợi ý bạn được thôi.chứ không có thời gian làm demo được.tại bận quá
    bạn tạo db menu.vd
    id | ten | id_parent
    1 | lv1 | null
    2 | lv2 | 1
    2 | lv2 | 1

    bạn lấy dữ liệu của nó ra mà forech thôi.còn lại là thuật toán.mình chắc bạn sẽ nghĩ được

  9. #9
    Ngày gia nhập
    05 2011
    Bài viết
    299

    bạn có thể chỉ mình cách gọi controller từ menu động gọi từ database không
    đây là nội dung: http://diendan.congdongcviet.com/sho...d.php?t=156685
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

  10. #10
    Ngày gia nhập
    07 2012
    Bài viết
    1

    Bạn chủ topic có thể hướng dẫn đầy đủ, chi tiết hơn chút được không. Tại mình mới tìm hiểu MVC 3 nên chưa hiểu làm. Có demo đính kèm thì hay biết mấy. Thanks

Các đề tài tương tự

  1. Thắc Mắc MVC3 Razor thì vào đây [Đề tài hỗ trợ]
    Gửi bởi ducnv_b01048 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 122
    Bài viết cuối: 14-07-2015, 10:34 PM
  2. Cách xóa nhiều dòng dữ liệu trong MVC3 (Razor)
    Gửi bởi kevinquang91 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 8
    Bài viết cuối: 04-05-2015, 11:25 PM
  3. Sử dụng Singleton(design pattern) cho đăng nhập trong MVC3 (Razor)
    Gửi bởi kevinquang91 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 14-04-2013, 09:02 PM
  4. Sử dụng Processing trong MVC3(Razor)
    Gửi bởi kevinquang91 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 01-04-2013, 02:51 PM
  5. Thêm, xóa csdl MVC3 và giới thiệu các hoạt động của mô hình mvc3,(videos)
    Gửi bởi ducnv_b01048 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 7
    Bài viết cuối: 10-10-2012, 04:12 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn