我正在使用ASP.NET MVC 3。
我的视图接受EditGrantApplicationViewModel
类型的视图模型。在这个视图模型中,我有属性。第一次加载视图时,我将其传递给该视图模型的一个实例:
public ActionResult Create()
{
EditGrantApplicationViewModel viewModel = new EditGrantApplicationViewModel();
return View(viewModel);
}
在这个视图中,我有我的提交按钮,它接受表单值并将其添加到数据库中。我在此视图上还有另一个按钮,但不必单击它,单击时,它会获取员工编号,执行数据库查找并获取员工的详细信息。此数据将返回到相同的视图,并使用数据预先填充此视图,以便用户无需键入数据。可以通过这种方式检索数据,也可以手动输入数据。
然后,用户可以继续并输入其他字段并编辑从查找返回的任何字段。当doen然后用户可以单击submit将其添加到数据库。我该怎么办?我是否需要在我的页面上使用表单,一个转到Create操作方法,另一个转到GetEmployee操作方法来执行数据库查找?我应该在页面上使用多个表单吗?如果是这样,有多种形式的最佳做法?任何代码示例将不胜感激:)
答案 0 :(得分:2)
当您单击按钮时,可以使用jquery触发AJAX调用以返回一些JSON数据:
$("someButton").click(function() {
$.ajax({
url: "/Service/GetData",
data: {}, // pass data here
dataType: "json",
type: "POST",
success: function() {
// manipulated return JSON data here
}
});
});
您可以拥有一个控制器来调用该服务并返回JSON或让服务执行此操作并跳过控制器。如果你在控制器中这样做:
public ActionResult GetData() {
var someData = service.GetData();
return Json(someData);
}
答案 1 :(得分:0)
假设员工详细信息是EditGrantApplicationViewModel
的一部分,您应该能够使用Web服务调用的结果填充表单上的字段。基本上它应该像用户手动输入值一样工作。只要您的字段命名正确,模型绑定器就会将其拾取。
我假设您的网络服务调用是使用javascript从页面进行的异步调用。