Добавляйте объекты по одному при нажатии кнопки MVC C # - PullRequest
0 голосов
/ 30 декабря 2018

Я добавил элементы в список. Но проблема здесь заключается в том, что я добавил элементы один за другим в список после нажатия кнопки. Каждый раз в списке отображается только 1 объект.

 List<Items> _objList = new List<Items>();
    public ActionResult AddNewItems(int ItemId)
    {

        Items items = itemBusiness.GetItemByItemId(ItemId);

        _objList.Add(new Items { ItemId =items.ItemId,ItemName =items.ItemName,
                                 ItemPrice = items.ItemPrice });

        Session["ItemSession"] = _objList;
        return RedirectToAction("Index","Home");
    }

Предметы DTO

 public class Items
{
    public int ItemId { get; set; }
    public string ItemCode { get; set; }
    public string ItemName { get; set; }
    public string ImageUrl { get; set; }
    public int? ItemBadge { get; set; }
    public DateTime? AddedDate { get; set; }
    public int? AddedBy { get; set; }
    public DateTime? UpdatedDate { get; set; }
    public int? UpdatedBy { get; set; }
    public bool? IsActive { get; set; }
    public decimal ItemPrice { get; set; }

}

1 Ответ

0 голосов
/ 30 декабря 2018

Вам необходимо сохранить список, а затем получить его, чтобы добавить в него новый элемент.Это создание может быть выполнено несколькими способами, включая вызов метода, который создает, если он не существует, и возвращает этот список сеансов, как в

var _objList = (List<Items>)Session["ItemSession"];

Просто убедитесь, что у вас действительно есть такойон не выдает InvalidCastException

. В этом коде предполагается, что у вас ДОЛЖЕН быть список, сохраненный в каком-либо методе «создания» до добавления другого.

public ActionResult AddNewItems(int ItemId)
{
    var _objList = (List<Items>)Session["ItemSession"];
    Items items = itemBusiness.GetItemByItemId(ItemId);
    _objList.Add(new Items { ItemId = items.ItemId,
                             ItemName = items.ItemName,
                             ItemPrice = items.ItemPrice });
    Session["ItemSession"] = _objList;
    return RedirectToAction("Index","Home");
}

Пример альтернативы, установите свойство на вашемкласс и используйте это, избегая исключения приведения, проверяя на null и создавая, если еще нет (и сохраняйте в конце, как у вас есть):

ItemsHolder.Add(new Items { ItemId = items.ItemId,
                             ItemName = items.ItemName,
                             ItemPrice = items.ItemPrice });

Добавьте в свой класс

// the property
public List<Items> ItemsHolder
{
    get
    {
        object ItemsSession = Session["ItemSession"] as List<Items>;

        if (ItemsSession == null)
        {
            ItemsSession = new List<Items>();
            Session["ItemSession"] = ItemsSession;
        }

        return (List<Items>)ItemsSession;
    }
}

Примечание, просто убедитесь, что ваши элементы сериализуемы.Вы можете просто сохранить список ItemId и получить имя и цену по мере необходимости, чтобы избежать некоторых проблем.https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/index

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...