Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回操作不';不要更改URL_C#_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

C# 返回操作不';不要更改URL

C# 返回操作不';不要更改URL,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我正在寻找一种通过POST重定向的方法,我发现的解决方案建议只使用我想要的操作名称并填充参数。所有这些都在同一个控制器中(我们称之为Home) 所以这很有用,只是当你看url时,它不显示/Home/Foo,而是显示/Home/Zoro。我可以在不使用RedirectToAction的情况下修复此问题吗?如果我使用它,我会得到这个:Home/Foo?Name=bar&Age=123,这是我不想要的。而不是直接调用Foo()使用RedirectToAction() 您这样做会调用服务器上的操作,但实

我正在寻找一种通过POST重定向的方法,我发现的解决方案建议只使用我想要的操作名称并填充参数。所有这些都在同一个控制器中(我们称之为Home)


所以这很有用,只是当你看url时,它不显示/Home/Foo,而是显示/Home/Zoro。我可以在不使用RedirectToAction的情况下修复此问题吗?如果我使用它,我会得到这个:Home/Foo?Name=bar&Age=123,这是我不想要的。

而不是直接调用
Foo()
使用
RedirectToAction()

您这样做会调用服务器上的操作,但实际上不会重定向,如果您希望更改url,则必须重定向到该操作:

return RedirectToAction("Foo", new {Name = "bar", Age = 123});
更新: 正如注释中提到的如何临时保存数据一样,您可以使用
TempData[]
进行保存:

TempData["Name"] = bar";
TempData["Age"] = 123;

return RedirectToAction("SomeAction");
在该操作中,您可以从
TempData
获取它:

public ActionResult SomeAction()
{

string Name = TempData["Name"] as string;
int Age - TempData["Age"] as int;

return View();

}
注:
请注意,
RedirectToAction()
仅适用于属于
HttpGet
的操作,它不适用于
HttpPost
操作。

请参阅编辑以了解为什么我不想使用RedirectToAction。如果要更新url,则必须使用
RedirectToAction()
恐怕您不能调用
HttpPost
action using it您能提供一个带有重定向操作但以某种方式存储数据的解决方案吗?这是我唯一能想象的。更新你的答案,我会接受的。你可以使用
TempData
来更新答案purpose@MrJinPengyou-您当前的Foo操作方法用
[HttpPost]
修饰。不能从控制器内重定向到另一个POST方法。如果没有接受
[HttpGet]
的Foo操作方法,则此操作将失败,因为没有匹配的操作方法。
public ActionResult SomeAction()
{

string Name = TempData["Name"] as string;
int Age - TempData["Age"] as int;

return View();

}