У меня есть вопрос, который я пытался найти в Google, но, честно говоря, я действительно не знаю, как искать или даже задавать этот конкретный вопрос.
Давайте представим, что у меня есть следующее:
Контроллер
[HttpGet]
public virtual ActionResult Summary()
{
var summaryViewModel = new CheckoutSummaryViewModel()
{
Products = ProductViewModel.BuildListFromShoppingCart(GetShoppingCart())
};
return View("_Summary", summaryViewModel);
}
ProductViewModel
public class ProductViewModel
{
public string Name
{
get; set;
}
public static List<ProdutoCheckoutViewModel> BuildListFromShoppingCart(ShoppingCart shoppingCart, IMappingService mappingService)
{
var itemsInCart = new List<ProductViewModel>();
foreach (var item in shoppingCart.ItemsInCart)
{
var itemViewModel = mappingService.Map<Product, ProductViewModel>(item.Product);
itemViewModel.Quantidade = item.Quantity;
itemsInCart.Add(itemViewModel);
}
return itemsInCart;
}
}
Это не рабочий код. Это просто, чтобы я мог объяснить, что я имею в виду.
Это правильный способ сделать это?
- Есть ли лучший способ, чем использовать stati c для построения списка? Я действительно не хочу делать это внутри контроллера.
- Передача IMappingService методу выглядит неправильно. Но, может быть, я просто привередлива. Это лучший способ?
Другой случай, когда мне нужно передать Session State в класс помощника stati c.
public static Guid GetCheckoutId(HttpSessionStateBase session)
{
return (Guid)session["checkoutId"];
}
Или, кроме того, иногда мне нужно передать в качестве параметра вспомогательным методам мой "unifOfWork", поскольку я использую шаблон репозитория.
Я столкнулся с этим " проблем "много и я пока не нашел лучшего способа это сделать.
PS: Если у кого-то из вас есть этот вопрос лучше, скажите, пожалуйста, чтобы я мог его обновить.