如何填充视图模型?

时间:2012-06-06 17:21:42

标签: asp.net-mvc

我正在使用MVC构建一个用于兽医诊所的基本应用程序。该应用程序有一个屏幕,员工可以在其中查看宠物的约会历史记录并添加约会。

历史记录部分已连线并正常工作。我看到所有先前约会的列表,并可以导航到每个约会以查看其详细信息。

问题是添加新约会。 Pet控制器的Edit视图具有以下操作链接:

@Html.ActionLink("Add Appointment", "Create", "Appointment", new { id = Model.Id }, null)

此ActionLink将Pet的Id从当前模型传递到Appointment控制器的Create操作。宠物ID是必要的,因为这就是数据库连接宠物和约会的方式。

Appointment控制器的Create视图中使用的视图模型具有Pet和Appointment属性。

如何填充视图模型的属性?约会将使用约会控制器的创建视图创建,但我仍需要在创建屏幕上显示各种宠物属性(名称,年龄,种类等)。这些属于视图模型的Pet属性。如何从传递到ActionLink的id转到视图模型中的水合Pet对象?我不认为我需要再次访问数据库,因为我需要的所有Pet属性都在用于Pet控制器的Edit视图的模型中

谢谢!

MVC 4 RC

2 个答案:

答案 0 :(得分:1)

您可以在Model Controller内填充Action

public ActionResult Create(string id){

   MyModel myModel = new MyModel();
   myModel.Foo = "Bar";
   return View(myModel);

}

您可以通过控制器内发生的服务调用将其解压缩到服务层上。然后它将传回一个将发送到View的模型。

public ActionResult Create(string id){

   // Some service inteface to interact with the data store to populate model
   MyModel myModel = service.GetMyModel();
   return View(myModel);

}

答案 1 :(得分:0)

您收到服务器的响应后,您的数据库连接将关闭。如果您重定向到另一个页面,则必须进行另一个db调用以加载您需要的任何内容。