2011-03-10 100 views
0

我有以下三类:HttpPost创建MVC

public class AModel { .. } 

public class BModel { 
.. 
public List A { get; set; } 
} 

public class CModel { 
.. 
public List B { get; set; } 
} 

我怎样才能得到CModel控制器在httpPost在列表对象中的数据创建?

与编辑模板:

// CModel 
@Html.EditorFor(model => model.B) 
<p> 
    <input type="submit" value="Create" /> 
</p> 

// BModel 
@Html.EditorFor(model => model.A) 
<p> 
    <input type="submit" value="Create" /> 
</p> 

它正常工作与名单,但我不能访问各列表对象在httpPost创建方法。

THKS提前,

布鲁诺格氏

回答

0

如果你有这样的事情

public class AModel { .. } 

public class BModel { 
.. 
public List<A> AList { get; set; } 
} 

public class CModel { 
.. 
public List<B> BList { get; set; } 
} 

你应该能够做到

CModel model; 
var blist model.BList; 

foreach(var b in blist) 
{ 
    var alist = b.Alist; 
} 
0

THKS很多关于回复我这么快。我终于找到了解决办法,这是我的类定义:

public partial class ClasseAmodel 
{ 
    public int id { get; set; } 
    public string label { get; set; } 
} 
public partial class ClasseBmodel 
{ 
    public List<ClasseAmodel> classeA { get; set; } 
} 
public partial class ClasseCmodel 
{   
    public List<ClasseBmodel> classeB { get; set; } 
} 

我ClasseCmodel创建视图:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" 
    type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" 
    type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Create</legend> 
     @Html.EditorFor(Model => Model.classeB) 
     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 

我EditorTemplates:

@model MetaCrud.Models.ClasseAmodel 

<p> 
    @Html.LabelFor(model => model.id) 
    @Html.TextBoxFor(model => model.id) 
    @Html.ValidationMessageFor(model => model.id) 
</p> 
<p> 
    @Html.LabelFor(model => model.label) 
    @Html.TextBoxFor(model => model.label) 
    @Html.ValidationMessageFor(model => model.label) 
</p> 

@model MetaCrud.Models.ClasseBmodel 

<p> 
     @Html.EditorFor(Model => Model.classeA) 
</p> 

我ClasseCmodelController创建方法:

// GET: /ClasseCmodel/Create 
public ActionResult Create() 
{ 
    var model = new ClasseCmodel(); 
    classeB = new List<ClasseBmodel>(); 
    var b = new ClasseBmodel(); 
    b.classeA = new List<ClasseAmodel>(); 
    var a = new ClasseAmodel(); 
    a.id = 1; 
    a.label = "1"; 
    b.classeA.Add(a); 
    a = new ClasseAmodel();    
    a.id = 2; 
    a.label = "2"; 
    b.classeA.Add(a); 
    classeB.Add(b); 
    classeC = new List<ClasseCmodel>(); 

    return View(model); 
} 

// POST: /ClasseCmodel/Create 
[HttpPost] 
public ActionResult Create(ClasseCmodel model, FormCollection collection) 
{ 
    return View(model); 
} 

在最后的方法我恢复了一整套我的对象和特别的ClasseAmodel对象:

id = 1; 
label = "1"; 

id = 2; 
label = "2"; 

这是我的主要目标.. 更有趣的,我修改了ClasseCModel像这样:

public partial class ClasseCmodel 
{   
    public List<ClasseCmodel> classeC { get; set; } 
} 

为了建立一个递归列表。我创建了ClasseCmodel编辑模板:

<p> 
     @Html.EditorFor(Model => Model.classeC) 
</p> 

而只是说:

@Html.EditorFor(Model => Model.classeC) 

在ClasseCmodel创建视图。 我可以在classeC列表中添加ClasseCmodel对象而无需使用pb,我现在可以获得递归视图..