Привет, ребята, есть проблема с проводной связью (ну, я считаю, что это проблема с проводной связью: P)
У меня есть страница заказа, созданная на asp.net c #, и пользователь добавляет ингредиенты в набор списков, когда пользователь и заканчивая добавлять элементы, они объединяются, чтобы сделать бутерброд, а затем добавляются в другой список, который показывает бутерброды и их ингредиенты. У меня также есть кнопка, позволяющая пользователю удалить выделенный сэндвич из заказа, все это работает нормально, пока страница не загружается строкой запроса, которая пропускает добавление ингредиентов и просто показывает сэндвичи в заказе, список сэндвичей. заполняет нормально, но я получаю сообщение об ошибке при нажатии кнопки удаления, которая
System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
на
CompletedSandwiches.SelectedItem.Text
Единственное отличие состоит в том, что я передаю строку запроса "? EDIT = 1"
и затем на page_load я проверяю
if (!Page.IsPostBack)
{
if ((Request.QueryString["EDIT"] != null) && (Request.QueryString["EDIT"] == "1"))
{
GetCurrentSandwiches();
}
RemoveFilling.Enabled = false;
RemoveCondiment.Enabled = false;
CID = int.Parse(Session["CID"].ToString());
}
GetCurrentSandwiches выполняет следующие действия:
protected void GetCurrentSandwiches()
{
sandwichOnOrder.Clear();
OrderManagement order = new OrderManagement();
List<SarnieIngredients> bob = order.GetSandwichesOnOrder(int.Parse(Session["OID"].ToString()));
List<int> ingredientIDs = new List<int>();
foreach (SarnieIngredients sarnie in bob)
{
List<Ingredients> batchOfIngredients = new List<Ingredients>();
double amount = 0.00;
ingredientIDs = sarnie.IngredientIDs;
foreach (int i in ingredientIDs)
{
Ingredients contents = ingredient.GetDesiredIngredientByID(i);
batchOfIngredients.Add(contents);
amount += contents.Price;
}
SandwichConentent sandwich = new SandwichConentent(batchOfIngredients, amount);
sandwichOnOrder.Add(sandwich);
CompletedSandwiches.Items.Add(sandwich.ToString());
}
и мой код кнопки удаления делает
bool found = false;
int i = 0;
while (i < sandwichOnOrder.Count || found == false)
{
SandwichConentent content = sandwichOnOrder[i];
if (content.ToString() == CompletedSandwiches.SelectedItem.Text)
{
CompletedSandwiches.Items.Remove(CompletedSandwiches.SelectedItem);
sandwichOnOrder.Remove(content);
found = true;
}
}
Кто-нибудь знает, почему у меня такая проблема?
заранее спасибо Мэтт
edit ~ извините, я забыл упомянуть, я знаю, что я не включил проверку, но я проверяю вручную, что перед передачей выбран элемент, и при просмотре списка в отладке он, по-видимому, нулевой, хотя визуально это не так.
edit 2 ~ еще раз извините, ошибка появляется в этой строке
if (content.ToString() == CompletedSandwiches.SelectedItem.Text)
и когда? EDIT = 1 передается, это новый вызов страницы с главной страницы веб-приложения