我有以下型号:
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中获取的,看起来还有其他一些我不熟悉的魔法。
我与其他页面的问题相同。
那是怎么回事以及如何防止这种行为?
答案 0 :(得分:2)
如果您没有指定它们是什么,ASP.NET MVC会重用路由变量。因此,如果我在某个与路由匹配的elses页面上,即使您没有明确说明使用它们,也会使用它们的ID。
@Html.ActionLink("My Page", "Details", "Account", new { id = "" })
只需将其设置为空白即可清除ID参数。