MVC中使用传递给它们的值的链接存在问题



在大多数情况下,我的链接(请参阅下面的示例)运行良好,但偶尔会发生一些奇怪的事情,因为链接所指向的实际URL根本没有意义。

工作链接示例
这个链接运行得非常好。该类包含一个背景图像,以便可以在页面上看到链接。

@Html.ActionLink(" ", "Edit", new { id = user.PKey }, new { @class = "edit-button" })

此链接导航到~/Users/1,假设id值为1。

断开的链接
这个链接根本不起作用:

@Html.ActionLink(User.Identity.Name, "Manage", "Account", new { name = User.Identity.Name })

此链接显示为欢迎信息的一部分。链接文本是我的用户名,所以我想它会导航到~/Account/Manage/ortund,但它会导航至~/Home/Manage?Length=7

到目前为止,Account Controller中的ManageActionResult没有任何作用,但当我开始对其进行编码时,它只会返回一个视图,允许登录的用户更新他们的配置文件并查看他们的活动。

据我所见,除了在其中一个链接上设置的类之外,这两个链接没有什么区别。有人能帮我理解为什么第二个链接不起作用吗?

提前感谢!

为了回答最初的问题,使用了错误的重载。在这种情况下,正确的过载是:

LinkText、ActionResult、Controller、RouteValues(对象)、HTMLAttributes(对象)-例如:

@Html.ActionLink(User.Identity.Name, "Manage", "Account", new { name = User.Identity.Name }, null)

Q的第二部分-使变量"name"成为URL的一部分,而不是查询字符串值-例如:

~/Account/Manage/name=ortund

~/账户/管理/ortund

你需要在你的路由配置中添加一个路由,这样MVC就知道你的url的第三部分应该包含"name"的值——这是通过以下路由完成的:

routes.MapRoute("AccManage", "Account/Manage/{name}", new {.controller = "Account", .action = "Manage"});

最新更新