foreach语句无法对变量MVC3错误进行操作
本文关键字:错误 操作 MVC3 变量 语句 foreach | 更新日期: 2023-09-27 18:25:27
以下是CourseRegisterModel的定义:
public class CourseRegisterModel
{
public StudentModel Student { get; set; }
public CourseModel Course { get; set; }
public CourseModel Course1 { get; set; }
public CourseModel Course2 { get; set; }
public CourseModel Course3 { get; set; }
public CourseModel Course4 { get; set; }
public CourseModel Course5 { get; set; }
public List<SelectListItem> CoursesList { get; set; }
public DateTime RegisterDate { get; set; }
}
这是我在主页加载上执行的控制器功能:
public ActionResult Home()
{
//Retrieve all registered courses for this bloody student
ServiceCourseClient client = new ServiceCourseClient();
Course[] coursespending;
var loggedInRollNumber = Request.Cookies["RollNumber"].Value;
coursespending = client.GetPendingRegisteredCourses(loggedInRollNumber.ToString());
List<CourseRegisterModel> coursesRegisteredmodelList = new List<CourseRegisterModel>();
CourseRegisterModel CRM = null;
int i = 0;
foreach (var serviceCourseRegistered in coursespending)
{
CRM = new CourseRegisterModel();
if (i == 0)
{
CRM.Course1.Code = serviceCourseRegistered.Code;
CRM.Course1.Name = serviceCourseRegistered.Name;
}
else if (i == 1)
{
CRM.Course2.Code = serviceCourseRegistered.Code;
CRM.Course2.Name = serviceCourseRegistered.Name;
}
else if (i == 2)
{
CRM.Course3.Code = serviceCourseRegistered.Code;
CRM.Course3.Name = serviceCourseRegistered.Name;
}
else if (i == 3)
{
CRM.Course4.Code = serviceCourseRegistered.Code;
CRM.Course4.Name = serviceCourseRegistered.Name;
}
else if (i == 4)
{
CRM.Course5.Code = serviceCourseRegistered.Code;
CRM.Course5.Name = serviceCourseRegistered.Name;
}
i++;
coursesRegisteredmodelList.Add(CRM);
}
return View(coursesRegisteredmodelList);
}
以下是我试图显示注册课程的视图:
@model StudentRegistrationPortal.Models.CourseRegisterModel
@{
ViewBag.Title = "Welcome Student";
}
<h2>Welcome
@Context.User.Identity.Name
</h2>
@Html.ActionLink("[Sign Out]", "SignOut", "Student")
<ul>
<li>@Html.ActionLink("Register Courses", "registerCourses", "Course")</li>
</ul>
<table>
<tr>
<th>
RollNumber
</th>
<th>
Course Code
</th>
<th>
Course Name
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => item)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
但上面视图中的foreach循环给出了以下编译时错误:foreach statement cannot operate on variables type CourseRegistrationModel beacuse it does not contain a public definition for GetEnumerator
请帮忙。
您的模型需要是IEnumerable
。请参见下文。
@model IEnumerable<StudentRegistrationPortal.Models.CourseRegisterModel>
@{
ViewBag.Title = "Welcome Student";
}
<h2>Welcome
@Context.User.Identity.Name
</h2>
@Html.ActionLink("[Sign Out]", "SignOut", "Student")
<ul>
<li>@Html.ActionLink("Register Courses", "registerCourses", "Course")</li>
</ul>
<table>
<tr>
<th>
RollNumber
</th>
<th>
Course Code
</th>
<th>
Course Name
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Context.User.Identity.Name
</td>
<td>
@Html.DisplayFor(modelItem => item)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
你试着做
foreach(CourseRegisterModel item in CourseRegisterModel)
{
...
}
这是不可能的。
foreach(CourseRegisterModel item in IEnumerable<CourseRegisterModel>)
{
...
}
您需要将模型设置为List
或IEnumerable
。您只需传递一个不实现GetEnumerator
的类,它应该是:
@model IEnumerable<StudentRegistrationPortal.Models.CourseRegisterModel>
或者:
@model List<StudentRegistrationPortal.Models.CourseRegisterModel>
您的视图模型是单个对象,如下所示:
@model StudentRegistrationPortal.Models.CourseRegisterModel
您可能想要在foreach循环中迭代CoursesList属性:
@foreach (var item in Model.CoursesList) { .... }