在MVC应用程序中提交多个表单时,操作应该返回什么?

时间:2009-12-09 18:13:28

标签: asp.net-mvc vb.net post submit

我有一个包含多个标签的表单。每个标签都有自己的<form>,定义如下:

<%  Using Html.BeginForm("Save", "FirstSection")%>

我有一个主保存按钮,可以在页面上提交所有表格,如下所示:

$("form").each(function() { $(this).submit(); });

问题在于我不知道每个Save操作应该返回什么:

<AcceptVerbs(HttpVerbs.Post)> _
Function Save(ByVal data As MyTable) As ActionResult
    SaveTheDataHere()
    Return View()
End Function

如果我使用Return View(),它将失败,因为我没有“保存”等效的“获取”。我真正想要的帖子就是什么都没有 - 只需保存数据并完成。

是否有更好的回报值?

3 个答案:

答案 0 :(得分:3)

此:

$("form").each(function() { $(this).submit(); });

不是个好主意。第一个submision将重新加载页面,其他表单可能不会被提交。更好的解决方案:

  1. 将所有表单控件放在一个表单中,并使用javascript显示/隐藏活动选项卡。只有一个提交按钮会提交所有标签数据。
  2. 为每个标签使用不同的视图。

答案 1 :(得分:0)

您可以返回带有状态消息的简单JsonResult。无论如何,这将是一种很好的做法,因为那时你会知道你的表格帖子是否有失败。

public JsonResult Save()
{
    SaveTheDataHere()
    return Json("Success");
}

对不起C#。我的VB生锈了。

答案 2 :(得分:0)

PanJanek是对的

你可以使用ajax和json与jQuery很容易

但似乎你喜欢当前的流程,你可以

返回视图(“namedView”) 要么 redirectToAction( “actionName”)