Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Cách tốt nhất để lấy Session trong Business (class library)?

16:39 08-12-2017 595 lượt xem 6 bình luận 17:32 08-12-2017

Chuyện là thế này.
Mình làm Web ATM dựa trên nền MVC.
Kết hợp 3 lớp :).
- Presentation chứa MVC
- Business (class library) chứa những method xử lý để Controller gọi lên
- Data Access (class library) để business gọi lên (:-)$

Trong ASP.net thì vẫn có cách Pass qua để lấy Session trong Business:
HttpContext.Current.Session["SessionName"]

Tuy nhiên, theo mình biết thì không nên gọi Session trong Bussiness (?)(?)


Nhưng ví dụ mình có một Method để kiểm tra số dư tài khoản đã đăng nhập (đã lưu trong Session). Thay vì:
GetBalance() (không có prameter, xử lý trong business sẽ gọi session lên và get ra).
Thì phải dùng
GetBalance(string cardNo) (ở tầng controller, sẽ gọi session lên, và gán vào).
Như thế lại thêm một bước |:)|:)

Anh em có cách nào tối ưu nhất không?
Mình cảm ơn :)

 

Update code (theo cách mình đang dùng):

Business:

        /// <summary>
        /// Get balance of account
        /// </summary>
        /// <returns>Balance of current account</returns>
        public decimal GetBalance()
        {
            Account account = (Account)HttpContext.Current.Session[Commons.SessionCommons.SessionCard];
            return acount.Balance;
        }

Controller:

        public ActionResult Index()
        {
            CultureInfo cul = CultureInfo.GetCultureInfo("vi-VN");
            ViewBag.GetBalance = objBusiness.GetBalance().ToString("#,###", cul.NumberFormat);
        }

 

Theo cách người ta khuyên dùng:

Business:

        /// <summary>
        /// Get balance of account
        /// </summary>
        /// <returns>Balance of current account</returns>
        public decimal GetBalance(string accountId)
        {
            return (GetAccountByAccountId(accountId)).Balance;
        }

Controller:

        public ActionResult Index()
        {
            CultureInfo cul = CultureInfo.GetCultureInfo("vi-VN");
            Account account = (Account)Session["Account"];
            ViewBag.GetBalance = objBusiness.GetBalance(account.Id).ToString("#,###", cul.NumberFormat);

            return View();
        }

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 17:04 08-12-2017

ủa thằng asp.net mvc có cách get userID k dùng session mà. có phải bạn cần cái ID đó là get dc đúng k

Nguyễn Thái Hải đã bình luận 16:42 08-12-2017

có thể up code lên được không? Chứ nói không vậy mông lung lắm

Câu hỏi mới nhất