【问题标题】:ASP.NET MVC post to controller action from same controllerASP.NET MVC 从同一控制器发布到控制器操作
【发布时间】:2016-12-15 19:58:01
【问题描述】:

我正在做这个项目,目前有以下方法:

 [HttpPost]
 public ActionResult Service(string identifier)

网页表单正在使用此功能

 <form method="POST" action="/Connector/Service">
 <input type="hidden" id="identifier" name="identifier" value="@TempData["Identifier"]"/>

所以当用户点击网页上提交表单的按钮时使用服务。用户从另一个操作被带到此页面。 我必须实现一个功能,有时用户不是将用户带到网页,而是直接从操作中转到 Service 方法。

我在搜索时发现了这个帖子:ASP.NET MVC: RedirectToAction with parameters to POST Action

但这似乎是一个糟糕的设计,并且返回带有 Service 的 RedirectToAction 实际上对我不起作用。

return RedirectToAction("Service", new {identifier})

经过更多搜索,我似乎实际上无法从我的控制器发出发布请求。 Asp.NET MVC : redirect to another controller with POST Action

关于我可以在这里做什么的任何想法?我对 ASP.NET 相当陌生,目前不知道该怎么做。感谢所有帮助,谢谢。

【问题讨论】:

  • 我同意这是糟糕的设计。 "where sometimes instead of taking the user to the webpage" - 有时是什么?这是这里缺少的部分
  • 调用重定向到操作的方式是发送 GET 请求。但是你的方法被标记为 POST only
  • stackoverflow.com/questions/129335/… 你应该阅读接受的答案,看看@Jasonbunting 是怎么做的
  • @MarkC。该网页是条款和条件页面。用户从条款和条件页面进入服务;我正在尝试拥有它,因此如果用户已经接受了条款,它将直接将其带到服务而不是网页。
  • 嘿,你可以像普通函数一样调用函数,像这样的`Service(value)`

标签: c# asp.net-mvc-3


【解决方案1】:

原来我可以直接调用函数

Service(identifier)

我一直在想我必须使用 RedirectToAction,所以我什至没有想到。

感谢Sherlock的回答!

【讨论】:

    【解决方案2】:

    标签 [post] 仅在视图本身提交表单时使用,如果您的页面从另一个视图重定向到控制器功能,而不是您所在的视图,您有两种选择:

    1. 使用 [get] 标签,你可能会更幸运地使用这个标签,虽然我不知道它是如何工作的(这可能会被编辑)

    2. 使用带参数的无标签函数,如果你从另一个视图重定向到一个带参数的函数,比如public ActionResult Service(string identifier)没有标签,你会自动到达这个函数。

      如果参数没有被指定,它会简单地为NULL。

    【讨论】:

    • 对于#2,如果我去掉 Post 标签,视图仍然可以提交它吗?
    • @SWWilliams 不,如果您删除 POST,除非您将表单方法更改为 GET,否则您将无法提交数据。 GET 用于检索远程数据,而 POST 用于插入/更新远程数据。
    • 是否可以让函数同时处理 POST 和 GET 请求?
    • 不.. 你总是可以创建一个单独的函数并在帖子中调用该函数并获取
    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 2014-04-04
    • 2011-03-15
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多