【问题标题】:Redirect to a Action with Post method in MVC在 MVC 中使用 Post 方法重定向到 Action
【发布时间】:2017-02-28 16:09:09
【问题描述】:

我在一个表单中有两个提交按钮,一个是搜索对应名称的记录,第二个是根据需要在进行更正后更新数据库中的记录。

控制器中的三个动作

  1. 使用HttpGet 编辑-- 当第一次查看显示时,它会将数据库中的所有名称加载到下拉列表中
  2. 使用HttpPost编辑--当我们点击搜索时,它会获取该名称的所有详细信息
  3. 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


【解决方案1】:

重定向总是使用get,尝试返回“Edit”视图,传入你要使用的Model:

public ActionResult Edit(){

....retrieve Model

return View(MyModel); // default view : Edit

}

[HttpPost]

public ActionResult Edit(MyModel){

....do things with MyModel

return View("OtherView", MyModel);

}

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2020-06-28
    • 1970-01-01
    • 2013-05-01
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多