Ank*_*tal 0 .net c# ienumerable asp.net-mvc-4
我正在构建一个简单的MVC应用程序来执行CRUD应用程序.我有两个简单的模型类.
public class MoniModel
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public int CategoryId { get; set; }
public string CategoryName { get; set; }
}
public class MoniGridModel
{
public IEnumerable<MoniModel> MoniDetails { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我试图执行以下操作:
public ActionResult MoniDetails()
{
MoniModel mim = new MoniModel();
MoniGridModel migm = new MoniGridModel();
mim.CategoryId = 1;
mim.CategoryName = "a";
mim.ProductId = 1;
mim.ProductName = "b";
migm.MoniDetails.ToList().Add(mim);
return View(migm);
}
Run Code Online (Sandbox Code Playgroud)
当migm.MoniDetails.ToList().Add(mim); 执行时,它会给出上述错误.我无法弄清楚为什么会这样.我正在为mim对象的每个成员赋值.下面是错误细节,但不确定这是否有帮助.

你从来没有实例化MoniDetails(它的价值在于null你创造的时候MoniGridModel):
public ActionResult MoniDetails()
{
MoniModel mim = new MoniModel();
MoniGridModel migm = new MoniGridModel();
mim.CategoryId = 1;
mim.CategoryName = "a";
mim.ProductId = 1;
mim.ProductName = "b";
var details = new List<MoniModel>();
details.Add(mim);
migm.MoniDetails = details;
return View(migm);
}
Run Code Online (Sandbox Code Playgroud)
正如@ David的答案指出的那样,尽管如此,最好让MoniGridModel班级来处理IEnumerable<MoniModel>.
除了他提供的选项之外,您还可以创建一个私有成员,IEnumerable<MoniModel>通过您当前拥有的getter 来支持和公开它:
public class MoniGridModel
{
private List<MoniModel> moniDetails;
public MoniGridModel()
{
this.moniDetails = new List<MoniModel>();
}
public IEnumerable<MoniModel> MoniDetails
{
get { return this.moniDetails; }
}
public void AddDetail(moniDetail detail)
{
this.moniDetails.Add(detail);
}
}
Run Code Online (Sandbox Code Playgroud)
然后AddDetail从你的控制器动作调用:
public ActionResult MoniDetails()
{
MoniModel mim = new MoniModel();
MoniGridModel migm = new MoniGridModel();
mim.CategoryId = 1;
mim.CategoryName = "a";
mim.ProductId = 1;
mim.ProductName = "b";
migm.AddDetail(mim);
return View(migm);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1495 次 |
| 最近记录: |