【问题标题】:Passing value of directory from anchor tag using ActionLink to Controller使用 ActionLink 将目录的值从锚标记传递到控制器
【发布时间】:2020-08-07 11:31:26
【问题描述】:

我正在尝试使用 ActionLink 从锚标记获取目录/文件夹的值到我的控制器。 我已经对值进行了编码,但它总是给我 404 错误。

{item.Folder} 的链接文本/值:\\webserver01\business\application

我得到的价值:%5C%5Cwebserver01%5Cbusiness%5Capplication

原创

@Html.ActionLink(item.Folder, "OpenFolder", new { id = item.Folder }, new { @class = "", @target = "_blank" })

第二个解决方案

@Html.ActionLink(item.Folder, "OpenFolder", new { id = HttpUtility.UrlDecode(item.Folder) }, new { @class = "", @target = "_blank" })

第三种解决方案

@Html.ActionLink(item.Folder, "OpenFolder", new { id = item.Folder.Replace("%5C" "\\" }, new { @class = "", @target = "_blank" })

第四个解决方案 - 将 %5C 替换为 100,然后将 100 替换为 Controller 中的 \\。

@Html.ActionLink(item.Folder, "OpenFolder", new { id = item.Folder.Replace("%5C" "100" }, new { @class = "", @target = "_blank" })

4 个解决方案给我带来了价值:%5C%5Cwebserver01%5Cbusiness%5Capplication

注意事项:

  • 我正在尝试在锚标记中打开一个目录。由于“安全问题”,它在 Chrome 中不起作用
  • 将使用 Process.Start() 然后打开文件或目录

【问题讨论】:

    标签: html asp.net-mvc razor


    【解决方案1】:

    如果我理解正确,您是在尝试将 item.folder 的内容发送到控制器中的操作?

    如果是这样,请考虑制作一个带有 item.folder 文本字段的表单。表单方法可以是Get而不是Post。

    【讨论】:

      【解决方案2】:

      Link text/value of {item.Folder} 转换你的值:

      \\webserver01\business\application
      

      收件人:

      //webserver01/business/application
      

      换句话说,编辑包含反斜杠的item.Folder 并将其替换为正斜杠。

      这将是根据您的原始解决方案生成的 HTML:

      <a class="" href="/ControllerName/OpenFolder/webserver01/business/application" 
      target="_blank">//webserver01/business/application</a>
      

      【讨论】:

        猜你喜欢
        • 2015-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多