Я получаю сообщение об ошибке, на которое я не могу найти решение, скорее всего это проблема с моими моделями, которые я пытаюсь подключить, ошибка, которую я получаю, следующая: «Исключение типа« System.ArgumentOutOfRangeException »произошло в mscorlib.dll, но не было обработано в коде пользователя», когда я пытаюсь выполнить итерацию по каждому столбцу. Итак, в основном одна из таблиц имеет меньше записей, чем другие? Как я могу это решить? Итерация находится в представлении -> item.Contacts.Count()asp.net mvc 5 Произошло исключение типа «System.ArgumentOutOfRangeException»
Программа должна взять несколько столбцов выбора из таблиц: Contatti, Contacts и Companies, которые находятся в разных местах и объединяют их (что происходит в список метода GET в контроллере), Contatti - это таблица сервера sql, импортированная в проект как .edmx, остальные 2 являются локальными для посевных таблиц проекта. код выглядит следующим образом:
модель, которая приносит таблицы вместе:
public partial class ContactsUni2
{
[Key, ForeignKey("Contatti")]
public int ContattoID { get; set; }
public List<Contatti> Contattis { get; set; }
public List<Companies> Companies { get; set; }
public List<Contact> Contacts { get; set; }
public virtual Contatti Contatti { get; set; }
public virtual Contact Contact { get; set; }
public virtual Companies Company { get; set; }
}
Контакты Модель:
public class Contact
{
[Key]
public int ContactId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[ForeignKey("Companies")]
public int CompanyId { get; set; }
public virtual ICollection<Companies> Companies { get; set; }
[Required]
//public virtual Contatti Contatti { get; set; }
public virtual ICollection<Contatti> Contatti { get; set; }
}
фирмы модель:
public class Companies
{
[Key]
public int CompanyId { get; set; }
public string CompanyName { get; set; }
public string CompanyAddress { get; set; }
public string CompanyCity { get; set; }
public string CompanyState { get; set; }
public string CompanyZip { get; set; }
public string CompanyArea { get; set; }
}
Contatti Модель:
public partial class Contatti
{
[Key, ForeignKey("Contact")]
public int ContattoID { get; set; }
public string Nome { get; set; }
public string Via { get; set; }
public string Citta { get; set; }
public string Stato { get; set; }
public string CodicePostale { get; set; }
public string Email { get; set; }
[Required]
public virtual ICollection<Contact> Contact { get; set; }
}
контроллер GET:
// GET: ContactsUni21
public ActionResult Index(String Page)
{
ContactsUni2 CU = new ContactsUni2();
CU.Contattis = db.Contattis.ToList();
CU.Contacts = db.Contacts.ToList();
CU.Companies = db.Companies.ToList();
List<ContactsUni2> contactlist = new List<ContactsUni2>();
contactlist.Add(CU);
return View(contactlist);
}
Вид:
<body>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Contatti.ContattoID)
@Html.DisplayNameFor(model => model.Contatti.Nome)
@Html.DisplayNameFor(model => model.Contatti.Citta)
@Html.DisplayNameFor(model => model.Contatti.CodicePostale)
@Html.DisplayNameFor(model => model.Contatti.Email)
@Html.DisplayNameFor(model => model.Contact.Address)
@Html.DisplayNameFor(model => model.Contact.CompanyId)
@Html.DisplayNameFor(model => model.Contact.ContactId)
@Html.DisplayNameFor(model => model.Company.CompanyName)
</th>
<th></th>
</tr>
@foreach (var item in Model.ToList())
{
for (int i = 0; i < @item.Contacts.Count(); i++)
{
<tr>
<td>
@item.Contattis[i].ContattoID
@item.Contattis[i].Nome
@item.Contattis[i].Citta
@item.Contattis[i].CodicePostale
@item.Contattis[i].Email
@item.Contacts[i].Address
@item.Contacts[i].CompanyId
@item.Contacts[i].ContactId
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ContattoID }) |
@Html.ActionLink("Details", "Details", new { id = item.ContattoID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ContattoID })
</td>
</tr>
«Как я решить это?" Задача которого? Что коллекции разных размеров или что вы пытаетесь вытащить больше предметов, чем там? Почему бы просто не обойти обе коллекции отдельно? –
Вероятно (int i = 0; i <@ item.Contacts.Count(); i ++) i больше, чем количество Contattis (@ item.Contattis [i]). Другими словами, Contattis имеет меньше элементов, чем Контакты. – kat1330
Я пробовал цикл отдельно, но я получаю только данные из таблицы Contacts, а не из contattis, потому что это таблица сервера sql или модель данных неправильная? – Dantuzzo