// 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); } }
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(); } }