【问题标题】:How to hide Id paramter from link in asp.net core MVC jquery?如何从asp.net核心MVC jquery中的链接隐藏Id参数?
【发布时间】:2018-04-27 09:44:28
【问题描述】:

这是我重定向到我的视图的脚本

<script>
    $(document).on('click', '.btndetail', function () {
            var id = $(this).data("id");
            var url = "/Schools/SchoolDetails/Id=" + id;
            window.location.href = url;
        }
    );
</script>

id 进入控制器

 [HttpGet]
 public IActionResult SchoolDetails(string Id)
 {
     return View();
 }

http://localhost:55696/Schools/SchoolDetails/Id=1234

但 ID 显示在链接中,我该如何隐藏它?

【问题讨论】:

  • 为什么要“隐藏”参数?您将始终必须将 ID 与您的请求一起发送。如果您不想让用户看到 id,您可以使用的方法是对其进行编码。例如使用 JWT (jwt.io)
  • 您可以为学校名称制作 SEO 友好的字符串。喜欢Some International SchoolSome-international-school。并获取相关学校的详细信息。当您显示学校详细信息时,不用担心在 url 中显示名称。
  • 使用 ajax 调用和 post 方法

标签: c# jquery model-view-controller


【解决方案1】:

如果您不希望显示该值,则必须将其发布到服务器。

如果您不想刷新页面,您将使用 ajax 进行 POST 并仅更新页面的一部分。这可以通过以下方式实现:

$(document).on('click', '.btndetail', function () {
        var id = $(this).data("id");
        var url = "/Schools/SchoolDetails/";

        $.ajax({
            url: url,
            type: "POST",
            data: { Id: id },
            success: function (data) {
                //returns whatever your controller returns.
            },
            error: function (data) {
                //error
            }
        });
    }
);

你的控制器也必须更新才能期待这个“POST”

[HttpPost]
public IActionResult SchoolDetails(string Id)
{
    return View();
}

如果您想发布并将用户重定向到该发布的页面 - 您可以使用一个简洁的免费 jQuery 插件,名为 jQuery.Redirect

$(document).on('click', '.btndetail', function () {
        var id = $(this).data("id");
        var url = "/Schools/SchoolDetails/";

        $.redirect(url, {
                Id: id
        });

    }
);

【讨论】:

    【解决方案2】:

    您需要实现 ajax 方法,使用 GET 进行异步调用,请参阅此文档: http://api.jquery.com/jquery.ajax/

    这是一个在您的代码中实现的示例:

    $(document).on('click', '.btndetail', function () {
            var id = $(this).data("id");
            var url = '@Url.Action("SchoolDetails", "Schools")';
            $.ajax({
                type: "GET",
                url: url,
                data: { Id = id },
                success: function (data) {
                    // Success Here
                    window.location.href = url;
    
                },
                error: function (data) {
                    alert("Error!");
                }
            })
        })
    

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 2020-10-24
      • 1970-01-01
      • 2013-09-24
      • 2021-12-08
      • 1970-01-01
      • 2011-06-07
      • 2015-10-31
      • 1970-01-01
      相关资源
      最近更新 更多