【问题标题】:How do I access a route parameter in my ASP.NET MVC view?如何在我的 ASP.NET MVC 视图中访问路由参数?
【发布时间】:2023-03-24 11:29:02
【问题描述】:

我有一个这样的网址/home/action/id

如何在视图中访问这个 id?

【问题讨论】:

  • 杰克,你真的把参数改成标题里的参数了吗?

标签: asp.net-mvc parameters routes


【解决方案1】:

这应该在你看来有效:

<%= this.ViewContext.RouteData.Values["id"] %>

(假设路由参数名为“id”)

【讨论】:

  • 这是否存在潜在漏洞,因为您没有对参数进行任何检查?
  • @Jack:是的,可能。不能保证始终使用相同的路由调用视图,因此“id”的值可能会丢失。
  • 这很容易受到反射型 XSS 攻击。它依赖于渲染中间件来过滤掉此类攻击,应与 EXTREME CAUTION 一起使用。很多关于 SO 的这个问题的答案都没有适当的免责声明来说明这是一个安全漏洞到底有多大。反射型 XSS 攻击是一个非常严重的漏洞。虽然我赞赏在 cmets 中承认这一点的答案,但我仍然敦促编辑答案以指出这对用户和网站所有者构成的风险。
【解决方案2】:

可以通过viewData传入;

在您的控制器中:

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

在你看来:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多