【问题标题】:Correct way to referencing paths in a Javascript file in an ASP.NET MVC app在 ASP.NET MVC 应用程序中引用 Javascript 文件中的路径的正确方法
【发布时间】:2011-03-08 22:37:52
【问题描述】:

目前我在我的 js 文件中所做的是这样的(并且有效):

    var root = "http://mydomain.com";

$.ajax({
    type: "POST",
    url: root + "/MyController/MyAction",
    data: { 'id': myId },
    dataType: "html",
    success: function (response) {
    blah blah...

但问题是,如果有人键入 www.mydomain.com 而不是 mydomain.com,则找不到路径。我尝试遵循这篇文章中的建议:Relative Image URL in Javascript File - ASP.net MVC and IIS 7,即将 root 设置为 ../ 或 document.location.host,但两者都不起作用。

在 js 文件中指定路径(到控制器、图像等中的操作)的正确方法是什么?

谢谢。

【问题讨论】:

    标签: c# javascript .net jquery asp.net-mvc


    【解决方案1】:

    在你看来:

    <script type="text/javascript">
        var url = '<%= Url.Action("MyAction", "MyController") %>';
    </script>
    

    在您的外部 javascript 文件中:

    $.ajax({
        type: "POST",
        url: url,
        data: { 'id': postId },
        dataType: "html",
        success: function (response) {
        blah blah...
    

    甚至更好:如果您要对现有链接或表单进行 AJAX 化:

    <%= Html.ActionLink("foo", "MyAction", "MyController", null, new { id = "foo" })
    

    在你的 javascript 中:

    $('#foo').click(function() {
        $.ajax({
            type: "POST",
            url: this.href,
            data: { 'id': postId },
            dataType: "html",
            success: function (response) {
            blah blah...
        });
        return false;
    });
    

    【讨论】:

    • 我的所有 js 代码都在一个外部 javascript 文件中,并且没有嵌入到视图中,所以我不能使用
    • @Prabhu,这就是为什么我以 In your view 开始我的回答。
    • 我正要说正则表达式,但这显然更好。
    • 哦,好的,明白了...所以您是说在视图中声明 url 并在 js 文件中使用它?实际上不是一个坏主意。这是标准的做法吗?
    • @Prabhu,有两种可能性:要么您正在对 DOM 的现有元素(例如锚点)进行 AJAX 化,要么在这种情况下您已经在 DOM 中拥有 url(请参阅我的第二部分答案)或者您不这样做,在这种情况下您可以将其声明为全局 javascript 变量。
    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 2016-12-28
    • 2022-01-19
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多