【问题标题】:Ways to pass data from one page to another将数据从一页传递到另一页的方法
【发布时间】:2017-08-24 18:45:01
【问题描述】:

我有一个场景,我必须将数据从一个页面传递到另一个页面。为了传递当前我正在使用的查询字符串,如下所示。

function showNextPage(Reference) {
    window.location.href = MasterPageVars.BaseUrl + 'Home/details?Reference=' + Reference;
}

这很好用。但现在我想将多个值(例如 from 和 to date 值)传递到下一页。我认为使用查询字符串传递它们是不合适的。

如果需要,我可以从数据库中获取数据。但它需要单独调用数据库。有人可以指出我可以在这里使用的其他方法吗?我知道我也可以使用 hiddenfor、session 和 cookie。什么是最好的方法 ?

谢谢。

【问题讨论】:

  • 在查询字符串中传递数据绝对没问题,我想不出你认为它不合适的原因。当您使用 MVC 时,您可以根据需要设置路由,但这仍然是通过 URL 传递数据。
  • 将值传递给 GET 方法的唯一方法是使用查询字符串值(或路由值)
  • 对于一些参数很好,但太多了,不仅会创建一个非常丑陋的 url,而且由于查询字符串限制,您可能会抛出异常。
  • 我唯一能想到的不想使用查询字符串是数据显示在 url 中。在公共电脑上使用时,人们可以看到以前用户使用的信息。有多种方法可以解决这个问题,而不是使用查询字符串。你在唱 .net core mvc 吗?
  • 当然可以 - 但它应该以 ISO (yyyy-MM-dd) 格式传递。但是如果这是用户输入日期的表单,您可以使用带有FormMethod.Get 的表单,它将自动传递(您不需要脚本)

标签: c# jquery asp.net-mvc


【解决方案1】:
    @using (Html.BeginForm("Method", "Controller", FormMethod.Get))
        {
         <input type="datetime" name="date" placeholder="Type the date"/>
<button type="submit" class="btn btn-default">
           Submit
        </button>
}

点击按钮后,您将传递您输入的日期,如下所示: http://yourhost.domain/Controller/Method?date=yy-mm-dd


但是听我的建议,最好使用$.ajax 调用,因为它是异步的,不会将您重定向到另一个页面。

.ajax({
            type: 'GET',
            url: '/Controller/Method/',
            data: $('input').val(),
            success: function () {
                             }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2020-11-20
    • 2021-06-24
    相关资源
    最近更新 更多