我有一个复杂的 viewModel ,由一个简单的模型和另一个复杂的模型组成。
我可以看到所有部分的数据聚集并传递给视图。
就在那里 @html>ViewData>Model
。
视图中的两个完整集。但是当我渲染页面时,Model.Compeditor.CompeditorId
侧的值都是 null ,例如
查看代码:
@model eManager.Web2.Models.CombineCompClass
@{
ViewBag.Title = "Competitor's Detail";
}
<h2>@ViewBag.Title</h2>
<fieldset>
<legend>Compeditor</legend>
<table>
<tr>
<td>
<div class="display-field">
@Html.HiddenFor(model => Model.Compeditor.CompeditorId)
</div>
<b>First Name</b>
<div class="display-field">
@Html.DisplayFor(model => Model.Compeditor.FirstName)
</div>
</td>
<td>
<b>Last Name</b>
<div class="display-field">
@Html.DisplayFor(model => Model.Compeditor.LastName)
查看型号代码:
namespace eManager.Web2.Models
{
public class CombineCompClass
{
private Core.Compeditor comp;
private IQueryable<Models.AddCompToEventClass> classlist;
public CombineCompClass(Core.Compeditor comp, IQueryable<Models.AddCompToEventClass> classlist)
{
this.comp = comp;
this.classlist = classlist;
}
public AddCompToEventClass AddCompToEventClass { get; set; }
public Compeditor Compeditor { get; set; }
}
}
要显示的控制器:虽然数据正在按预期收集并传递给模型
public ActionResult CompeditorDetail(int CompeditorId)
{
var comp = _db.Compeditors.Single(c => c.CompeditorId == CompeditorId);
var classlist = from o in _db.Events
join o2 in _db.Event_Classes on o.EventID equals o2.EventID
where o.EventID.Equals(o2.EventID)
join o3 in _db.Class_Definitions on o2.ClassID equals o3.Class_Definition_ID
where o2.ClassID.Equals(o3.Class_Definition_ID)
where o.CurrentEvent.Equals(true)
select new AddCompToEventClass
{
Event = o,
Event_Class = o2,
Class_Definition = o3,
};
var model = new CombineCompClass(comp, classlist);
return View(model);
}
我有一个简单的数据集,然后是一个列表。
首先,我尝试显示简单数据。我可以让Model.Compeditor.CompeditorId
通过智能引用,但同样没有数据存在。
我想我只需要改变显示器的显示方式,但我无法弄清楚如何看待它。
好的..我刚刚看到两个模型都是空的,数据是在comp和classlist中,因为我在Controller中定义了这些。所以Compeditor和AddCompToEventClass的模型在传递后为null,值在comp和classlist中。这是在控制器中执行此操作的错误方法吗?
好的我觉得我发现了我的问题......也传递了下面的对象...... null和影响模型的地方:
public AddCompToEventClass AddCompToEventClass { get; set; }
public Compeditor Compeditor { get; set; }
已删除,现在可以访问数据..现在可以使用其中一套来解决@foreach问题!
答案 0 :(得分:2)
而不是:
@Html.HiddenFor(model => Model.Compeditor.CompeditorId)
尝试将“模型”的大小写更改为“模型”:
@Html.HiddenFor(model => model.Compeditor.CompeditorId)