1

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

我需要在 Hobbydetail 类中添加数据: public class 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; }

}

我希望我的视图“创建”让用户创建新记录并在其下方显示现有记录...我不想使用视图模型... sumbody 可以提前帮我谢谢

4

1 回答 1

0

实现此目的的一种方法是:在您的控制器中,创建一个呈现列表的子操作,然后使用Html.RenderAction在您的“创建”视图中呈现该操作(另请参阅此)。我在下面包含了一些代码(我没有测试过这个,但它应该给你基本的想法)。请注意,这不是完成此操作的唯一方法 - 您可以使用部分视图查看此内容。还请了解 html.RenderAction 和 html.Action 之间的区别,请参阅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");}
于 2012-08-07T18:46:11.217 回答