2013-02-19 56 views
0

我正在使用MVC4/Razor。在GET请求之后,视图显示查询字符串,并且在POST请求之后,视图不显示查询字符串 - 两者都如预期的那样。POST后显示查询字符串

但是,我有一个[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]的行动,我需要POST一个表单,并显示相应的查询字符串。

我该如何在服务器端做到这一点? 我知道这可以通过转换为GET请求在客户端完成,我很好奇看到如何做到这一点,但只有这样才能使其工作。

回答

0

您可以用return RedirectToAction发布参数

return RedirectToAction("About", "Create", 
         new { id = PId, Name=PName }); // more params if needed 

的参数将被包含在查询字符串。

+0

好的,它可以像你写的一样工作,但是我传递了一个'RouteValueDictionary'而不是单个的参数,并且放下了“__RequestVerificationToken”键。它重定向到相同的动作,这使得它看起来像一个GET,并发送一个查询字符串的响应! – 2013-02-19 01:08:48

+0

我希望这样做不会有意外的安全副作用...... – 2013-02-19 01:09:36

+0

没有安全问题,因为它先通过发布,但路线看起来有点不同。如果你有id或者param你的路由,它通常不会遵守路由,而是把params放入查询字符串中。参数传递的影响没有什么不同。 Action Method以相同的方式获取每个参数。 – 2013-02-19 01:26:27