ASP.NET MVC后,从同一个控制器

问题描述:

我在做这个项目,目前有如下方法控制行动:ASP.NET MVC后,从同一个控制器

[HttpPost] 
public ActionResult Service(string identifier) 

此功能目前正在使用的网页形式

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

所以当用户点击一个在网页上提交表单的按钮时就会使用服务。用户从另一个操作转到此页面。 我必须实现一个功能,有时用户不必将用户带到网页,而是直接从操作中直接访问服务方法。 ASP.NET MVC: RedirectToAction with parameters to POST Action

但好像那是糟糕的设计和返回RedirectToAction与服务实际上并没有为我工作:

我搜索的时候发现了这个线索。

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

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

什么,我可以在这里做任何想法?我对ASP.NET相当陌生,不知道该怎么做。所有的帮助表示赞赏,谢谢。

+0

我同意这是不好的设计。 ''有时不用把用户带到网页上'' - 什么是**有时是**?这是缺少的一块这里 –

+1

您调用重定向到操作的方式是发送GET请求。但是你的方法被标记为仅POST – Steve

+1

http://stackoverflow.com/questions/129335/how-do-you-redirect-to-a-page-using-the-post-verb你应该阅读接受的答案,并看到@Jasonbunting怎么做 – ergen

所以原来我可以做

Service(identifier) 

我一直在想我不得不使用RedirectToAction,这样甚至没有穿过我的脑海里直接调用该函数。

感谢Sherlock的答案!

当窗体被视图本身submited [文章]仅用于标签,如果你的页面重定向到一个控制器上的功能,从另一种观点认为一个比你的,你有两个选择:

  1. 使用[get]标签,虽然我不清楚它是如何工作的(这可能会被编辑),但使用[get]标签可能会带来更大的运气

  2. 如果您使用参数重定向另一个视图为具有参数的功能,如public ActionResult Service(string identifier)表示没有标签,则会自动达到此功能。

    如果该参数没有被指定,它将只是NULL。

+0

对于#2,如果我带走邮政标签将视图仍然能够提交? –

+0

@SWWilliams不,如果删除POST,除非将表单方法更改为GET,否则无法提交数据。 GET用于检索远程数据,而POST用于插入/更新远程数据。 – mluker

+0

是否有可能允许函数同时处理POST和GET请求? –