【问题标题】:HttpPost Create MVCHttpPost 创建 MVC
【发布时间】:2011-03-10 14:27:53
【问题描述】:

我有以下三个类:

public class AModel { .. } 

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

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

如何在 CModel Controller 的 httpPost Create 中获取 List 对象中的数据?

使用编辑器模板:

// 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>

它与 List 一起工作正常,但我无法在 httpPost create 方法中访问 List 对象。

提前考虑,

布鲁诺·格兰让

【问题讨论】:

    标签: model-view-controller asp.net-mvc-3 http-post


    【解决方案1】:

    如果你有这样的事情

    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;
    }
    

    【讨论】:

      【解决方案2】:

      非常感谢您这么快回复我。我终于找到了解决方案,这是我的类定义:

      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>
      }
      

      我的编辑器模板:

      @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 中创建视图。 我可以在没有 pb 的情况下在 classeC 列表中添加 ClasseCmodel 对象,现在我得到了一个递归视图..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-07
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        相关资源
        最近更新 更多