3

我有以下模型:

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

然后我有AccountController 和followign 动作

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 参数的 Account/Details url 时,会显示他自己的信息,并且当 id 出现在 url 中时,会显示有关具有该 id 的用户的信息。

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

我对其他页面也有同样的问题。

那么发生了什么以及如何防止这种行为呢?

4

1 回答 1

2

如果您不指定它们是什么,ASP.NET MVC 会重新使用路由变量。因此,如果我在与路由匹配的其他人的页面上,即使您没有明确表示要使用他们的 ID,也会使用他们的 ID。

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

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

于 2012-10-18T20:29:57.160 回答