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)?
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();
}
ủ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
có thể up code lên được không? Chứ nói không vậy mông lung lắm