2017-10-06 49 views
0

我试图重定向到从另一个POST方法POST方法POST方法,但似乎它试图通过获取重定向:尝试重定向到从另一个

[HttpPost] 
[Route("Users/NewUser")] 
[SystemAuthorize(PermissionForm = Form.USERS, Permissions = PermissionValue.EDIT)] 
public ActionResult NewUser(ConsultUserModel m) //This is called from Consult View by post 
{ 
    Debug.WriteLine("I'm here post"); 
    UserInfoModel model = GetUserInfoModel(); 
    return RedirectToAction("Edit", model); 
} 

[HttpPost] 
[Route("Users/Edit")] 
[SystemAuthorize(PermissionForm = Form.USERS, Permissions = PermissionValue.EDIT)] 
public ActionResult Edit(UserInfoModel edit) 
{ 
    return View(edit); 
} 

当我打电话的行动结果服务器错误:

enter image description here

+1

可能的重复[如何使用POST动词重定向到页面?](https://stackoverflow.com/questions/129335/how-do-you-redirect-to-a-page-using-the -post-verb) – Diado

+1

“Post”应该改变服务器上的状态。如果误用,POST重定向看起来很危险。它本身不应该被浏览器支持 –

+0

浏览器让请求 – arslanaybars

回答

1

正如已经提到过的那样,您不能通过设计重定向帖子。

现在,我将提出一个解决问题的方法:

在我看来,像你正在创建一个新用户,然后将用户重定向到他们可以编辑自己的信息的地方。登陆操作不需要使用帖子。从那个中删除[HttpPost],你应该很好去。

有另一个使用[HttpPost]并处理更新的操作。

如果您确实想要保存属性,请将用于更新用户信息的代码抽象为私有方法,并从两个位置调用它。

+0

我该如何避免url上的__RequestVerificationToken? – Dener

+0

__RequestVerificationToken是我假定您正在使用的ValidateAntiForgeryToken属性所必需的。另一种方法是从'NewUser'操作中返回'Edit'视图,而不是重定向。 – JuanR

+0

我已经这么做了,不幸的是,我需要将模型传递给视图,因为它负责处理来自数据库的一些数据以填充视图的下拉列表。这就是为什么我要在URL上获得RequestVerificationToken。我希望我可以从控制器中获取这些数据,而不是从模型中获取。 – Dener

0

重定向到打击作为一个POST没有意义的目标。重定向是通过向链接重定向到浏览器返回302响应来完成的。然后浏览器进行GET,这就是你所看到的。

相关问题