无法显示要查看的复杂视图模型 - 数据存在,只是不显示

时间:2014-02-18 20:22:57

标签: c# asp.net-mvc asp.net-mvc-4

我有一个复杂的 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问题!

1 个答案:

答案 0 :(得分:2)

而不是:

@Html.HiddenFor(model => Model.Compeditor.CompeditorId)

尝试将“模型”的大小写更改为“模型”:

@Html.HiddenFor(model => model.Compeditor.CompeditorId)