// GET: abinfo
        public ActionResult Index()
        {
            string param = Request.QueryString["abid"]; // берем параметр из uri
            int elementId;
            XDocument xmlDoc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes")); // создаем xml-документ

            try
            {
                if (int.TryParse(param, out elementId)) // проверяем, что в параметре находится int-значение и парсим его
                {
                    using (AddressBookEntities context = new AddressBookEntities())
                    {
                        // запрос в базу данных:
                        var query = from c in context.AddressBook
                                    where c.ID == elementId
                                    select c;

                        if (query.Count() > 0)
                        {
                            // если запись найдена, формируем xml
                            AddressBook dbElement = query.First();
                            XElement[] xmlSubElements = { new XElement("FullName", dbElement.FullName),
                                                      new XElement("PhoneNumber", dbElement.PhoneNumber),
                                                      new XElement("EMail", dbElement.EMail),
                                                      new XElement("Department", dbElement.Department),
                                                      new XElement("Position", dbElement.Position) };
                            XElement xml = new XElement("AddressBook", new XElement("Contact", new XAttribute("ID", elementId), xmlSubElements));
                            xmlDoc.Add(xml);

                            return Content(xmlDoc.Declaration.ToString() + xmlDoc.ToString(), "text/xml");
                        }
                        else
                        {
                            // иначе - выводим ошибку в виде xml
                            return errorResult(xmlDoc, "Запись с указанным id не найдена в базе данных");
                        }
                    }
                }
                else
                {
                    return errorResult(xmlDoc, "Неверно указан id");
                }
            }
            catch (Exception ex)
            {
                return errorResult(xmlDoc, "Ошибка получения данных: " + ex.Message);
            }
        }
Exemple #2
0
        public ActionResult Index()
        {
            try
            {
                Array contacts;
                using (AddressBookEntities context = new AddressBookEntities())
                {
                    // запрос в базу данных: группируем записи по Департаменту, а затем в каждой группе сортируем записи по ФИО
                    contacts = context.AddressBook.GroupBy(c => c.Department).AsEnumerable().Select(g => new GroupedContacts { Group = g.Key, Contacts = g.OrderBy(c => c.FullName).ToArray() }).ToArray();
                }

                return View(contacts);
            }
            catch (Exception ex)
            {
                ViewBag.Message = "Ошибка! " + ex.Message;
                return View();
            }
        }