我正在使用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
答案 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调用以加载您需要的任何内容。