2015-12-30 26 views
1

我有一个问题。 比方说,我有这样的路线:为什么MVC保持在URL路径的值不用将它们直接

/客户/ {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"); 
} 

现在的问题是,为什么我有URL /Guest/123/321RedirectToAction("Index")后,我提交表单后?我的意思是 - 太棒了。它减少了很多代码。我只是不喜欢使用方法,我不明白。 :)

我一直认为,我应该通过行新的{ var1 = 123, var2 = 321 }RedirectToAction为了保持URL。

回答

1

这是MVC的一个令人困惑的部分,这是previously reported as a bug因为很多人不觉得这种行为是自然的。但据微软称,这种行为是有目的的。

在某些情况下,它可以正常工作,例如localizing the URL,但在其他情况下(例如using Areas),您必须手动清除ActionLink中的值才能访问默认区域。

@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, null) 
+0

谢谢。我是不是能够找到的有关这个的任何文档,这是一个有点混乱。 – Kindzoku

相关问题