【问题标题】:Opening new page passing parameters without showing them on the URL打开新页面传递参数而不在 URL 上显示它们
【发布时间】:2020-02-12 15:51:09
【问题描述】:

我正在制作一个 MVC C# Web 应用程序,我开始想知道您是否可以打开其他需要参数才能运行的页面,而无需通过 URL 实际发送它们,这是不安全的,并且可能导致某些用户搞砸另一个数据库的注册表。

我的问题是,我从来没有做过这样的事情,而且我找不到任何做这样事情的代码示例。该项目使用 C# 和 JS 运行,我尝试过的主要内容包括:

-使用 Ajax 这样做:

首先我有一个调用函数的按钮:

<a href="@Url.Action("actionEditStuff", "ControllerName")">Link Text</a>|


function openHorario(id, id_schedule, id_tool) {
    alert(oid, id_schedule, id_tool);
    $.ajax({
        type: 'POST',
        url: '/Schedules/actionEditStuff',
        data: {
            id: id,
            id_schedule: id_schedule,
            id_tool: id_tool
        },
        async: 'false',
        success: function (data) {
            //???
        }
    });
}

我知道有一种方法可以在 Ajax 返回成功的情况下转到新页面,但是……这也需要您通过 URL 发送参数。

显然,这不起作用,因为控制器中的操作是返回视图,而不是页面。所以...我意识到我的想法不是很聪明,并转移到其他地方:链接,但最终总是不得不通过 URL 发送参数可见。

有什么方法可以以适当、干净的方式做到这一点?

谢谢!

【问题讨论】:

  • 返回html或者View onsuccess()怎么样?

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


【解决方案1】:

@Layan - 只是为了说明我上面的评论 - 你可以按照这些思路实现一些东西:

  • 您的客户端通过 ajax 调用

    ...
    var data = {
            id: id,
                id_schedule: id_schedule,
                id_tool: id_tool
            };
    $.ajax({
            url: '/Schedules/actionEditStuff',
            type: "POST",
            data: data,
            contentType: 'application/json; charset=utf-8',
            success: function (view) {
                    //load returned data into div? or popup?
            }
            , error: function (xhr, status, error) {
                    ...
            }
    });
    ...
    
  • 和你的控制器动作

    public ActionResult actionEditStuff(....parameters...)
    {
            ...
            ...do your magic ...
            return PartialView("~/Views/_PartialViewThatShowsSomething.cshtml", ...pass model...);
    }
    

【讨论】:

  • 您好!感谢你的回复。问题在于它正在调用的页面已经创建,这不是我从头开始创建的。所以...我只是想更改一个指向已经运行的网站的链接,通过 URL 发送参数,而不是简单地以另一种方式发送它们。我什至不确定你是否能做到。我曾经在使用 Express.js、Vue.js 和大量其他框架的 SPA 中工作过,这是可能的……但我不确定这是否可能,因为其中一个令人惊叹的框架。
  • @Layan,-如果您需要打开其他页面而不“显示”查询字符串,您可以使用您需要的参数向其他页面发出 POST 请求。您可以在 ajax.onsuccess() 回调中使用 POST“重定向”
猜你喜欢
  • 1970-01-01
  • 2020-08-13
  • 2011-03-21
  • 2019-04-14
  • 1970-01-01
  • 2018-12-11
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多