在没有循环的情况下迭代IEnumerable模型 - ASP.NET-MVC5

时间:2015-07-14 14:47:28

标签: javascript c# razor asp.net-mvc-5 html.beginform

我强烈输入了两个记录的IEnumerable,我将从控制器中查看这些记录。我总是有两个记录。我需要以单独的形式打印这两个记录,即HTML beginform。

我的问题是如何在不使用@for或@foreach循环的情况下打印IEnumerable Model数据?你可以使用某种索引来读取模型中的对象及其基于索引的数据???

从记录中获取数据

public List<EmergencyContact> GetEmergencyContactByStudentID(int _studentID)
    {
        try
        {
            using (var _uow = new StudentProfile_UnitOfWork())
            {
                var _record = (from _emergencyContact in _uow.EmergencyContact_Repository.GetAll()
                               join _student in _uow.Student_Repository.GetAll() on _emergencyContact.StudentID equals _student.StudentID
                               where _emergencyContact.StudentID == _studentID 
                               select _emergencyContact).ToList();

                return _record;
            }
        }
        catch { return null; }
    }

控制器

 public ActionResult EditEmergencyContact()
    {
       int _studentEntityID = 0;

        _studentEntityID = _studentProfileServices.GetStudentIDByIdentityUserID(User.Identity.GetUserId());

        List<EmergencyContact> _emergencyContactModel = new List<EmergencyContact>();

        _emergencyContactModel = _studentProfileServices.GetEmergencyContactByStudentID(_stu


  return PartialView("EditEmergencyContact_Partial", _emergencyContactModel);

    }

视图

@model IEnumerable<App.DAL.Model.EmergencyContact>
.............//other code

 @Html.EditorFor(modelItem => model.NameOfContact, new { htmlAttributes = new { @class = "form-control" } })

上面的行@ html.editor给出错误;参考下面的截图

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您使用List

,则可以通过它的索引访问它
@model List<App.DAL.Model.EmergencyContact>
.............//other code

 @Html.EditorFor(modelItem => model[0].NameOfContact, new { htmlAttributes = new { @class = "form-control" } })

但由于您现在通过它的索引访问该对象,我总是建议您首先查看它是否null,甚至知道您说您将始终拥有2个项目收集,它没有做任何伤害检查。

<强>更新

您可以通过在Razer视图中执行以下操作来检查它是否为null:

@if(Model[0] != null) 
{
    @Html.EditorFor(modelItem => model[0].NameOfContact, new { htmlAttributes = new { @class = "form-control" } })
}