【问题标题】:Passing static param to ActionLink in Controller context (ASP.NET MVC)在控制器上下文中将静态参数传递给 ActionLink (ASP.NET MVC)
【发布时间】:2018-07-07 15:01:39
【问题描述】:

是否可以添加一些总是在 url 中添加一些参数的路由? 例如,当我写一些东西链接这个

 @Html.ActionLink("Site", "Index", "Admin")

它路由到 admin/index?key=some_auth_key。例如,我将此参数保存在一些静态类/变量中。

【问题讨论】:

  • @Html.ActionLink("Site", "Index", "Admin", new { key = yourValue }, null) 但如果它是静态的,为什么不直接在重定向到的方法中获取值?
  • @StephenMuecke 它类似于身份验证密钥。一旦你成功进入,之后你的所有链接都开始有这个参数
  • 不清楚您要这样做的目的或原因。 (并且用户可以在地址栏中输入/Admin/Index,这意味着key不会被传递)
  • 在这种情况下,我捕获了请求,检查 url,如果没有密钥,则向他发送未授权页面。
  • 对不起,这没有意义。听起来你想要授权,你可以使用 [Authorize] 属性(如果用户没有被授权,他们会自动重定向到登录页面)

标签: asp.net asp.net-mvc routing parameter-passing


【解决方案1】:

Html.ActionLink 的第四个参数可以有任意数量的属性:

Html.ActionLink("Check this", "Edit", "test", 
                 new { id = id, data=name }, new { style = "display:block" })

这些属性是基于路由插入到 URL 中的,但如果属性名称不能匹配到任何路由中,则将其添加为 URL GET 参数。

所以如果你有标准路由 {controller}/{action}/{id},你会得到 URL:

test/Edit/[id]?data=[name] 

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多