У меня есть следующие модели:Значение не может быть пустым Имя параметра: источник, даже если IEnumerable в не нулевой
public class Student
{
public int Id { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
public ICollection<WorkExperience> WorkExperiences { get; set; }
public ICollection<Education> Educations { get; set; }
public ICollection<Skill> Skills { get; set; }
}
public class Employer
{
public int Id { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
public ICollection<WorkExperience> WorkExperiences { get; set; }
public ICollection<Education> Educations { get; set; }
public ICollection<Skill> Skills { get; set; }
}
public class WorkExperience
{
public int Id { get; set; }
[Display(Name = "Company Name")]
public string CompanyName { get; set; }
[Display(Name = "Job Title")]
public string JobTitle { get; set; }
[Display(Name = "Experience (in years)")]
public string Experience { get; set; }
[Display(Description = "Enter City, Country for e.g. San Francisco, California")]
public string Location { get; set; }
public virtual ICollection<Employer> Employers { get; set; }
[Display(Name = "Set as Current Company")]
public virtual ICollection<Student> Students { get; set; }
}
Я хочу каждого студента & работодателя иметь несколько workexperiences каждый. Таким образом, у stuent может быть любое количество опыта &, даже у работодателя может быть любое число. Проблема, с которой я сталкиваюсь, заключается в том, где, когда она достигает кода работы, в нем говорится:
Значение не может быть пустым. Имя параметра: источник
Однако, я получаю все значения в представлении после прохождения IEnumerable модели студента
Ниже приводится точка зрения кода
@model IEnumerable<OpenOpportunity.Models.Student>
@foreach (var student in Model)
{
<div class="row clearfix">
<div class="col-xs-12">
<h1>
@student.FirstName @student.LastName
</h1>
</div>
</div>
var count = 0;
if (@student.WorkExperiences == null)
{
<small>No current position & company set</small>
<a id="currentDetails" href="@Url.Action("EditCurrentDetails", "Main", new { area = "Students", id = student.Id })">
<i class="fa fa-edit"></i>
</a>
}
else if (@student.WorkExperiences.Count() > 0)
{
foreach (var work in student.WorkExperiences)
{
if (work.IsCurrentCompany == true)
{
<small>@work.JobTitle,@work.CompanyName</small>
<a id="currentDetails" href="@Url.Action("EditCurrentDetails", "Main", new { area = "Students", id = student.Id })">
<i class="fa fa-edit"></i>
</a>
}
else
{
count++;
}
}
}
if (@student.WorkExperiences.Count() == count)
{
<small>No current position & company set</small>
<a id="currentDetails" href="@Url.Action("EditCurrentDetails", "Main", new { area = "Students", id = student.Id })">
<i class="fa fa-edit"></i>
</a>
}
}
А вот код контроллера:
var userID = db.Users.Find(User.Identity.GetUserId());
var getStudentDetails = (from x in db.Students.Include("WorkExperiences")
where x.Id == userID.Student.Id
select x).ToList();
return View(getStudentDetails);
Кроме того, я хотел бы сказать вам мнение работодателя работает отлично & это представление с тем же кодом. Не определены ли отношения? или что-то другое?
Что строка коды бросает это исключение? –
В вашем коде есть синтаксические ошибки. Символ '@' в ваших операциях if должен быть таким: '@if (...)' not 'if (@ ...)' – CodingYoshi
@CodingYoshi, это не синтаксическая ошибка, и она должна быть 'if (...) '-' @if (...) 'будет генерировать исключение (' @ 'перед' student' просто бессмысленно) –