使用mvc3在一个视图中显示“创建”和“详细信息”视图

时间:2012-04-24 08:34:20

标签: asp.net-mvc-3 view

您好,我想显示一个页面,我允许用户创建一个新记录,并显示下面相同表格的其他相关记录......

我需要在Hobbydetail类中添加数据:        公共课HobbyDetail     {

public virtual HobbyMasters Hobbymaster { get; set; }
public virtual Course course { get; set; }
public virtual StudyMedium StudyMedium { get; set; }
public virtual decimal Fees { get; set; }

}

我希望我的视图“创建”让用户创建新记录,并在其下方显示现有记录... 我不想使用viewmodel ... 可以总结帮助我 Thanx提前

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是:在控制器中,创建一个呈现列表的子操作,然后使用Html.RenderAction(也是see this)在“创建”视图中呈现该操作。我在下面列出了一些代码(我没有测试过这个,但它应该给你一些基本的想法)。请注意,这不是实现此目的的唯一方法 - 您可以使用部分视图see this。还请理解html.RenderAction和html.Action,see this之间的区别。

    //In HobbyDetail Controller
    [HTTPGet]
    public ActionResult Create()
    {
      var model = new HobbyDetail ();
      return View(model);
    }

    [HTTPPost]
    public ActionResult Create(HobbyDetail model)
    {
      if(ModelState.isValid)
      {
         //logic to persist model
      }
      else
      {
         //logic when validation fails...
      }
    }

    [ChildActionOnly]
    public ActionResult ListAll()
    {
      List<Hobbydetail> model = //query to DB, or Data store to get Hobbydetails
      return View(model);
    }

//View for ListAll
@model List<HobbyDetail>
{
 Layout = null; //No layout here...
}

<ul>
@foreach(var h in Model)
{
 <li>@h.HobbyMasters.Name</li> //for example...
}
</ul>

//View for Create
@model HobbyDetail 
...
@{html.renderAction("ListAll");}