我有一个问题。 让我们说我有这条路线:
/旅客/ {VAR1} / {VAR2}
/旅客/ {VAR1} / {VAR2} /编辑
当我在/Guest/123/321
页面上时,我有/Guest/123/321/edit?id=1
的链接。
页面/Guest/123/321/edit?id=1
上有一个表单,该表单在同一地址上发布。
让我们说我的动作如下:
public ActionResult Index(int var1, int var2)
{
/* here is some a business logic */
return View(model);
}
[HttpGet]
public ActionResult Edit(int id)
{
/* here is some a business logic */
return View(model);
}
[HttpPost]
public ActionResult Edit(EditModel model)
{
/* here is some a business logic */
return RedirectToAction("Index");
}
问题是,在我提交表单后,为什么在/Guest/123/321
之后我有网址RedirectToAction("Index")
?我的意思是 - 它太棒了。它减少了很多代码。我只是不喜欢使用我不理解的方法。 :)
我一直认为,为了保留网址,我应该将新的{ var1 = 123, var2 = 321 }
换成新的RedirectToAction
。
答案 0 :(得分:2)
这是MVC的一个令人困惑的部分,之前曾报告为 1 ,因为很多人都认为这种行为不自然。但根据微软的说法,这种行为是设计上的。
- 不幸的是,Codeplex问题网址已被删除,并且不在Internet存档中。
醇>
行为是当未明确提供路由值时,从当前请求重用。
在某些情况下效果很好,例如localizing the URL,但在其他情况下,例如using Areas时,您必须手动清除ActionLink
中的值才能访问默认区域。
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, null)