Html.ActionLink魔术

时间:2012-10-18 20:24:56

标签: asp.net-mvc-3

我有以下型号:

public class AccountDetailsViewModel
{
   public Guid ID { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

然后我有一个带有跟随行动的AccountController

public ActionResult Details(Guid? id)
{
    var model = new AccountDetailsViewModel
    {
        ID = 2,
        FirstName = "FirstName",
        LastName = "LastName"
    };
    return View(model)
}

强烈输入此操作的视图

@model AccountDetailsViewModel
...
@Html.ActionLink("My Page", "Details", "Account")
...
//display info about user

这个想法是,当用户访问没有id参数的帐户/详细信息URL时,会显示他自己的信息,并且当url信息中出现id时,会显示有关该id的用户。

问题是,当用户访问带有id(某人的其他页面)的URL时,链接My Page(在视图顶部)指向同一页面。 ActionLink获取当前显示的用户的ID,这是一个问题,因为我希望我的页面链接始终指向帐户/详细信息(到我的页面)。这个动作链接的ID不是从我想到的@Model中获取的,看起来还有其他一些我不熟悉的魔法。

我与其他页面的问题相同。

那是怎么回事以及如何防止这种行为?

1 个答案:

答案 0 :(得分:2)

如果您没有指定它们是什么,ASP.NET MVC会重用路由变量。因此,如果我在某个与路由匹配的elses页面上,即使您没有明确说明使用它们,也会使用它们的ID。

@Html.ActionLink("My Page", "Details", "Account", new { id = "" })

只需将其设置为空白即可清除ID参数。