CMi*_*nor 2 c# asp.net-mvc asp.net-mvc-5
大家好我有一个视图,将数据填充到表中我在我的视图中有这个
@model IEnumerable<"Model">
Run Code Online (Sandbox Code Playgroud)
在我看来,我有类似的东西
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Audit_ID)
</td>
//rest of the code
</tr>
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在视图中输入这些内容
@model DAL.EODAuditModel
@model IEnumerable<"Model">
Run Code Online (Sandbox Code Playgroud)
因为我想这样做
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Employee</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法做到这一点因为我在视图中定义了2个@model会引发异常
我想要这个因为这个视图将查看记录并创建新记录.谢谢.
更新2:我根据建议编辑代码
型号代码:
public class EODAuditModel
{
public EODAuditModel()
{
this.ExistingRecords = new List<EODAuditModel>();
}
public int Audit_ID { get; set; }
[Required]
public string Description { get; set; }
[Required]
public string CreatedBy { get; set; }
public DateTime CreatedDate { get; set; }
public List<EODAuditModel> ExistingRecords { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
查看代码:
@foreach (var item in Model.ExistingRecords)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatedBy)
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
控制器代码:
public ActionResult Index()
{
EODAuditBL eodBl = new EODAuditBL();
List<EODAuditModel> eodModel = eodBl.GetEODAudit.ToList();
return View(eodModel);
}
Run Code Online (Sandbox Code Playgroud)
GetEODAuditCode:
public IEnumerable<EODAuditModel> GetEODAudit
{
}
Run Code Online (Sandbox Code Playgroud)
当我运行该程序时,编译是正常的,但我在网页中收到此错误
传递到词典中的模型项的类型为"System.Collections.Generic.List`1 [DAL.EODAuditModel]",但是这需要字典类型"DAL.EODAuditModel"的模型项.
您可以创建包含IEnumerable<"Model">和Name属性的新模型类.
public class AuditViewModel
{
public AuditViewModel()
{
this.ExistingRecords = new List<EODAuditModel>();
}
public string Name { get; set; }
public List<EODAuditModel> ExistingRecords { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在视图中定义模型,如下所示
@model AuditViewModel
Run Code Online (Sandbox Code Playgroud)
并将foreach块更改为此
@foreach (var item in Model.ExistingRecords)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Audit_ID)
</td>
//rest of the code
</tr>
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
看起来你得到了错误,因为在控制器中你传递了一个实例List<DAL.EODAuditModel>而不是DAL.EODAuditModel视图.将您的控制器更改为此
public ActionResult Index()
{
EODAuditBL eodBl = new EODAuditBL();
List<EODAuditModel> auditList = eodBl.GetEODAudit.ToList();
EODAuditModel model = new EODAuditModel();
model.ExistingRecords = auditList;
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
我改变eodModel,以auditList避免模型和现有的记录之间的混淆.
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |