将模型从Controller传递给View时遇到了一些问题。 模型是这样的:
public class ClassA
{
public ClassA()
{
this.List1 = new List<ClassB>();
}
public int Value { get; set; }
public List<ClassB> List1 { get; set; }
}
例如ClassB
:
public class ClassB
{
public string something { get; set; }
}
在Controller中,我有
using CQC.Models;
using CQC.ViewModels;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity.Infrastructure;
using System.IO;
using System.Linq;
using System.Web.Mvc;
namespace CQC.Controllers
{
public class SampleController : Controller
{
public ActionResult Xyz()
{
ClassA reg = new ClassA();
reg.Value = 1;
reg.List1.Add(new ClassB() { something = "aaa" });
return View(reg);
}
}
}
在return View(reg)
之前调试和暂停我确认reg
包含我想要的内容。
因此,在视图中(并使用@model CQC.ViewModels.ClassA
),我可以看到Model.Value
,但列表Model.List1
为空。
拜托,我错过了什么?
视图是这样的:
@model CQC.ViewModels.ClassA
@{ ViewBag.Title = "abc"; }
<fieldset>
<legend>Detail</legend>
<div class="row">
<div class="label">@Html.LabelFor(model => model.Value)</div>
<div class="output">@Html.DisplayFor(model => model.Value)</div>
</div>
@if (Model.List1.Count > 0)
{
<div class="rowAutoHeight">
<div class="label">@Html.Label("List1")</div>
<table class="stripe hover" id="in_tbl1">
<thead>
<tr>
<th>Programa</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.List1)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Something)</td>
</tr>
}
</tbody>
</table>
</div>
}
</fieldset>
答案 0 :(得分:0)
将ClassA模型类的定义更改为:
public class ClassA
{
public ClassA()
{
this.List1 = new List<ClassB>();
}
public int Value { get; set; }
public List<ClassB> List1 { get; set; }
}
在Controller中调用ClassA reg = new ClassA();
时,会在创建ClassA实例时实例化一个新的List1,然后可以添加值。
所以这在View中应该得到一个结果:
<ul>
@foreach (var item in Model.List1)
{
<li>@item.something</li>
}
</ul>