代码之家  ›  专栏  ›  技术社区  ›  mare

向ASP.NET MVC控制器操作发送URL/路径

  •  3
  • mare  · 技术社区  · 15 年前

    根据各种来源,显然不可能将这样的路径“/content/scripts/jquery.js”作为MVC操作的参数发送,因为正斜杠用作参数分隔符“/”,而ASP.NET MVC返回400个错误。

    到目前为止,我找到的唯一工作解决方案是base64编码这样的字符串,将其作为参数值发送,并在控制器操作中对其进行解码。我将JS文件的路径编码如下:

    http://localhost/vdir/Services/GetJavaScript/=L3JzaDIwMTAvQ29udGVudC9XaWRnZXRGcmFtZXdvcmsvd2lkZ2V0Lmpz/=aHR0cDovL2xvY2FsaG9zdA==

    我需要它,因为我使用返回javascriptreult的控制器操作将小型化和修改过的javascript注入页面,在这种情况下我不想使用HTTP处理程序。

    问题:这真的是ASP.NET MVC的唯一方法吗?因为它看起来不太用户友好,不是很多用户会去看网页源,但无论如何…;)

    4 回复  |  直到 15 年前
        1
  •  1
  •   PatrickSteele    15 年前

    您可以使用“老式”的查询字符串方法:

    http://localhost/vdir/Services/GetJavaScript?script=/Content/Scripts/jquery.js

    让getjavascript方法接受一个名为script的字符串:

    public ActionResult GetJavaScript(string script)
    
        2
  •  2
  •   Community CDub    7 年前

    通配符映射允许您将路径作为路由变量传递。见 File path as MVC route argument

        3
  •  1
  •   Charlino    15 年前
        4
  •  0
  •   Asbjørn Ulsberg    15 年前

    你不能换个 / 用另一个角色,比如 | ?它仍然会使URI干净,但不会干扰路由。如果您的所有脚本都在同一个目录中,那么您可以默认使用该目录,并从引用中删除路径,从而完全避免了问题。