【发布时间】:2017-02-28 16:09:09
【问题描述】:
我在一个表单中有两个提交按钮,一个是搜索对应名称的记录,第二个是根据需要在进行更正后更新数据库中的记录。
控制器中的三个动作
- 使用
HttpGet编辑-- 当第一次查看显示时,它会将数据库中的所有名称加载到下拉列表中 - 使用
HttpPost编辑--当我们点击搜索时,它会获取该名称的所有详细信息 - EditPerson
HttpPost-- 当我们点击编辑记录时,它会将所有数据保存回数据库
在代码中我想这样做
public ActionResult EditOperation(string Command, DataLayer objmodel)
{
if (Command == "Search")
{
return RedirectToAction(Edit with Post method) // How to ? always going to Edit With get method
}
else if (Command == "Edit Record")
{
return RedirectToAction(EditPerson) //Easy to redirect but How to send Model object also ?
}
return View("Edit",objmodel);
}
RedirectToAction (String ActionName, String ControllerName , Object routeValues)
有没有办法告诉编译器重定向到编辑操作,但有 Post 方法而不是 Get 的编译器?
注意:这里不想使用 Javascript,只有纯 c# 代码
【问题讨论】:
-
你可以注释action只接受post动词,即[HttpPost],一种形式只有一个提交,我想知道你如何使用两个提交?
-
您想在一个表单中有 2 个提交按钮吗?如果事情确实没有意义,那么表单应该只发布到操作方法。但是您可以修改
Edit方法以包括保存记录例程,具体取决于用户发送 POST 请求时提供的隐藏字段或其他字段值。 -
一个表单可以使用多个提交按钮,但这不是我关心的问题,我想重定向到具有特定方法的Action
-
我还尝试为每个提交按钮使用单独的表单,但在这种情况下,我在控制器中访问的模型对象在第二种表单中显示为 null。
-
请注意,HTTP 协议在提交表单期间使用 PRG 模式(POST-redirect-GET),因此将 POST 方法重定向到另一个 POST 方法没有意义。有关详细信息,请参阅此类似问题:stackoverflow.com/questions/129335/…。
标签: c# asp.net-mvc