如何在ASP.NET MVC视图中访问路由参数?

25
我有一个像这样的URL:/home/action/id 我该如何在视图中访问这个id?

1
杰克,你真的把标题中的parameter改成了paramter吗? - Brettski
3个回答

48

这个应该在你的视图中起作用:

<%= this.ViewContext.RouteData.Values["id"] %>
(假设路由参数名为"id")

2
这个是否存在潜在漏洞,因为您没有对参数进行任何检查? - Jack Marchetti
1
@Jack:是的,很可能。不能保证视图总是使用相同的路由调用,因此“id”的值可能会丢失。 - M4N
这容易受到反射型XSS攻击。它依赖于呈现中间件来过滤此类攻击,并应极度小心使用。有许多关于此问题的答案,但没有适当的免责声明说明这是多么大的安全漏洞。反射型XSS攻击是非常严重的漏洞。虽然我赞赏评论中承认了这一点,但仍敦促对答案进行编辑,指出这会给用户和网站所有者带来的风险。 - CervEd

13

你可以通过viewData将它传递进去;

在你的控制器中:

public ActionResult Index(string id)
{
    ViewData["Name"] = Server.UrlEncode(id);
    return View();
}

在你的视图中:

<h1><%= ViewData["Name"] %></h1>

0

现在,在MVC中更加简单。

您可以像这样访问RouteData的值:

(ID <code>@RouteData.Values["id"]</code>)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接