【问题标题】:How can you make call a page without showing parameters on the URL?如何在不显示 URL 参数的情况下调用页面?
【发布时间】:2020-01-28 11:37:47
【问题描述】:

我正在尝试修改一个项目,以便当您通过 <a> 元素访问路由和参数时,它们不会显示在 URL 中。

这是视图上的代码:

@Html.ActionLink("Edit", "EditSchedule", new { id = item.OID, iorDapa = item.IOR_HORARIO }) |
@Html.ActionLink("Delete", "DeleteSchedule", new { id = item.OID, iorDapa = item.IOR_HORARIO })

我试图通过调用这个来更改 RouteLink 的操作链接

 routes.MapRoute(
      name: "EditSchedule",
      url: "{controller}/{action}/{oid}_{iorDapa}",
      defaults: new { controller = "Users", action = "Index", oid = UrlParameter.Optional, iorDapa = UrlParameter.Optional }
 );

但是,这不起作用,因为它一直在使用已建立的 URL 创建链接元素,所以我认为还需要其他东西,也许是我不知道调用 api 的某种方法?

而且...从这里开始,我尝试了很多东西,但似乎都没有。

从我使用过的其他项目(JS)中,我记得路由器调用了一个 API,而 API 又调用了一个控制器文件,而该控制器执行了逻辑然后调用视图。

但是,在这个 C# 项目中,我无法让程序调用 WebApiConfig 文件或 RouteConfig,而无需实际显示 URL 上的参数。

对不起,如果我对自己的解释有点糟糕,我有点迷失了!

【问题讨论】:

  • 如果没有参数,如何找到对应的带参数路由?
  • 使用 JS,你做了同样的事情,只是通过前端路由从你那里抽象出来
  • @Cid 是通过 api 发送它们,所以路由看起来像这样:“route/page”,而不是“route/page/oid=241&iorDapa=23”
  • @KristófTóth 我记不太清了,但是是的,它是用 Vue.JS 完成的,并且前端有一个路由器。事情是我确信必须有一种方法可以通过 JSON 或其他方式将参数发送到页面中,调用一些控制器或 API,我只是不知道如何。
  • 如果您不想从 url 读取请求头或请求的内容,您可以使用它们。在此处阅读有关参数绑定的更多信息:docs.microsoft.com/en-us/aspnet/web-api/overview/…

标签: c# asp.net-mvc asp.net-web-api


【解决方案1】:

来自 ActionLink 的数据将使用 GET 方法发送,调用数据将在浏览器地址栏中可见。要隐藏您发送的内容,请使用 POST 方法。例如,通过提交表单或使用 POST 数据向服务器发出 AJAX 调用来发布您的数据

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2019-11-11
    • 2021-10-23
    • 2012-02-17
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多