【问题标题】:Url.Action Not figuring out the actual urlUrl.Action 没有弄清楚实际的 url
【发布时间】:2012-04-29 15:18:00
【问题描述】:

我正在尝试使用 Url.Action 根据控制器操作生成正确的 HTTP URL,如下所示: $.post('@Html.Raw(Url.Action("Delete", new { id = "1" }))')

但是,它没有按预期工作。触发的实际网址(从开发工具获得)是 http://localhost:60223/CordBlood/@Html.Raw(Url.Action(%22Delete%22,%20new%20%7B%20id%20=%20%224%22%20%7D))

而我想要这样的东西: http://localhost:60223/CordBlood/Delete/1

我在这里做错了什么?

【问题讨论】:

  • 此代码是否在 .js 文件中?还是在您的 .cshtml 文件中?此外,您的堆栈跟踪与此问题无关,这只是请求错误 url 的结果。
  • 嗯——你不需要使用Html.Raw?除此之外,代码应该可以正常工作......你能发布一个稍微大一点的例子吗?
  • 在您提供的代码示例中,结束单引号的位置错误。开头有两个括号,结尾有三个。
  • @MystereMan 这是在一个 cshtml 文件中。
  • @Pandincus 单引号有问题,但这只是我在此处粘贴代码时犯的一个错误。我正在使用的代码很好

标签: c# asp.net-mvc-3


【解决方案1】:

我认为您正在尝试实现类似的目标

<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#dropdown").change(function () {
                var id = $("#dropdown").val();

                if (id == "")
                { id = 0; }
                var dataToSend = {
                    Id: id

                };
                RedirectToPage(id);
            });
            function RedirectToPage(id) {
                var url = '@Url.Action("Delete", "yourController", new { Id = "__id__" })';

                window.location.href = url.replace('__id__', id);
            }
        });

    </script>

希望这能给你一些想法

【讨论】:

  • 我正在尝试做类似的事情。除了你正在做一个 window.location 而我正在做一个 ajax.post 我也在尝试做 url.replace 但唯一的区别是我正在尝试做一个url.replace(/__ID__/, id)
猜你喜欢
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2019-05-27
  • 2013-05-19
相关资源
最近更新 更多