使用不同的操作方法在同一视图上多个提交按钮

时间:2011-08-03 13:07:03

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我正在使用ASP.NET MVC 3。

我的视图接受EditGrantApplicationViewModel类型的视图模型。在这个视图模型中,我有属性。第一次加载视图时,我将其传递给该视图模型的一个实例:

public ActionResult Create()
{
   EditGrantApplicationViewModel viewModel = new EditGrantApplicationViewModel();

   return View(viewModel);
}

在这个视图中,我有我的提交按钮,它接受表单值并将其添加到数据库中。我在此视图上还有另一个按钮,但不必单击它,单击时,它会获取员工编号,执行数据库查找并获取员工的详细信息。此数据将返回到相同的视图,并使用数据预先填充此视图,以便用户无需键入数据。可以通过这种方式检索数据,也可以手动输入数据。

然后,用户可以继续并输入其他字段并编辑从查找返回的任何字段。当doen然后用户可以单击submit将其添加到数据库。我该怎么办?我是否需要在我的页面上使用表单,一个转到Create操作方法,另一个转到GetEmployee操作方法来执行数据库查找?我应该在页面上使用多个表单吗?如果是这样,有多种形式的最佳做法?任何代码示例将不胜感激:)

2 个答案:

答案 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从页面进行的异步调用。