使用浏览器发出传递查询字符串
Issue passing query string with browsers
我目前正在确保构建并主要 运行 使用 IE11 的旧 MVC4 站点适用于其他浏览器。我们测试的第一个是 Edge Chromium,但我们遇到了弹出窗口的问题。
弹出窗口发生时,我们传递一个查询字符串,如下所示:
http://localhost/Gen/DataExport?cntId=100&InitialLoad=True&showProgress=False&startExport=False
哪里
cntId
是我们的记录标识符
InitialLoad
是一个 true/false 值,让系统知道这是用户第一次进入页面(它执行一些需要页面刷新的操作)
showProgress
是一个 true/false 值让系统知道显示某些操作的进度(我们在第一次加载页面时不显示)
startExport
是一个 true/false 值,告诉系统何时导出某些数据(最初未使用)
回到控制器代码,我们有一个 HttpGet
方法来加载页面。该方法接收 cntId
、InitialLoad
、showProgress
和 startExport
.
使用 IE11 时一切正常。传入的参数到达并正确读取。
但是,我们发现的问题是当 Edge Chromium、Chrome 和 Firefox 尝试加载页面时,查询字符串包含不正确的数据。
每个浏览器都显示 cntId
是 100,但 InitialLoad
由于某种原因是 false .
我很困惑为什么这个页面没有正确传递参数,而其他所有页面都可以。可能是因为系统正在打开一个新的 window,但我不确定。
编辑:
由于有些人看不懂我的问题以及该问题的标签,因此我将在这里更加明确。
这是一个 MVC4 应用程序,在后端使用 C# 并连接到 Oracle 数据库。这是一个由政府实体使用的项目,该实体仍在使用 IE11。
IE11 的支持将于 8 月结束。显然,上述政府实体仍需要使用此 MVC4 应用程序。因此,为什么我要尝试确保它在 Edge(Chromium 版本)、Chrome、Firefox 和 Safari 中正常工作。
废话不多说了,现在来看我的代码示例。我有一个带有 link 的视图。 link 调用一个 Javascript 函数,该函数继续打开一个弹出窗口 window。代码如下:
function OpenGen() {
var url = '@Url.Action("DataExport", "Gen", new { cntId = @Session["cntId"], InitialLoad = true, showProgress = false, startExport = false })';
//Open the new window for the Gen
window.open(url, "GenWindow", 'height=' + screen.height + ',width=' + screen.width + ',resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=yes');
}
点击link后,服务端在GenController中执行如下代码:
[HttpGet]
public ActionResult DataExport([Optional, DefaultParameterValue(-1)]int cntId,
[Optional, DefaultParameterValue(false)]bool InitialLoad,
[Optional, DefaultParameterValue(false)]bool showProgress,
[Optional, DefaultParameterValue(false)]bool startExport)
{
if (InitialLoad)
{
...
}
}
我正在调试 InitialLoad 的 if 语句。使用IE11时传入的参数是正确的
cntId
= 100,InitialLoad
= 真,showProgress
= 假,startExport
= 假
但是,在调试 Edge、Chrome、Firefox 和 Safari 时,我得到以下参数:
cntId
= 100,InitialLoad
= 假,showProgress
= 假,startExport
= 假
我不确定为什么 Edge、Chrome、Firefox 和 Safari 会丢失参数。四个的url和IE11的一样
话虽如此,欢迎就此问题提出任何想法。
我想通了这个问题。由于某些奇怪的原因,Edge、Chrome、Firefox 和 Safari 没有正确处理“&”。我知道 & 符号是一个被编码的值,但奇怪的是每个浏览器都无法自行解码它。当我为他们简化它时,它起作用了。
IE11 是唯一出于某种奇怪原因处理它的。
无论如何,这只是一个奇怪的问题,在打开弹出窗口时没有专门处理参数。
我目前正在确保构建并主要 运行 使用 IE11 的旧 MVC4 站点适用于其他浏览器。我们测试的第一个是 Edge Chromium,但我们遇到了弹出窗口的问题。
弹出窗口发生时,我们传递一个查询字符串,如下所示:
http://localhost/Gen/DataExport?cntId=100&InitialLoad=True&showProgress=False&startExport=False
哪里
cntId
是我们的记录标识符InitialLoad
是一个 true/false 值,让系统知道这是用户第一次进入页面(它执行一些需要页面刷新的操作)showProgress
是一个 true/false 值让系统知道显示某些操作的进度(我们在第一次加载页面时不显示)startExport
是一个 true/false 值,告诉系统何时导出某些数据(最初未使用)
回到控制器代码,我们有一个 HttpGet
方法来加载页面。该方法接收 cntId
、InitialLoad
、showProgress
和 startExport
.
使用 IE11 时一切正常。传入的参数到达并正确读取。
但是,我们发现的问题是当 Edge Chromium、Chrome 和 Firefox 尝试加载页面时,查询字符串包含不正确的数据。
每个浏览器都显示 cntId
是 100,但 InitialLoad
由于某种原因是 false .
我很困惑为什么这个页面没有正确传递参数,而其他所有页面都可以。可能是因为系统正在打开一个新的 window,但我不确定。
编辑:
由于有些人看不懂我的问题以及该问题的标签,因此我将在这里更加明确。
这是一个 MVC4 应用程序,在后端使用 C# 并连接到 Oracle 数据库。这是一个由政府实体使用的项目,该实体仍在使用 IE11。
IE11 的支持将于 8 月结束。显然,上述政府实体仍需要使用此 MVC4 应用程序。因此,为什么我要尝试确保它在 Edge(Chromium 版本)、Chrome、Firefox 和 Safari 中正常工作。
废话不多说了,现在来看我的代码示例。我有一个带有 link 的视图。 link 调用一个 Javascript 函数,该函数继续打开一个弹出窗口 window。代码如下:
function OpenGen() {
var url = '@Url.Action("DataExport", "Gen", new { cntId = @Session["cntId"], InitialLoad = true, showProgress = false, startExport = false })';
//Open the new window for the Gen
window.open(url, "GenWindow", 'height=' + screen.height + ',width=' + screen.width + ',resizable=yes,scrollbars=yes,toolbar=no,menubar=no,location=yes');
}
点击link后,服务端在GenController中执行如下代码:
[HttpGet]
public ActionResult DataExport([Optional, DefaultParameterValue(-1)]int cntId,
[Optional, DefaultParameterValue(false)]bool InitialLoad,
[Optional, DefaultParameterValue(false)]bool showProgress,
[Optional, DefaultParameterValue(false)]bool startExport)
{
if (InitialLoad)
{
...
}
}
我正在调试 InitialLoad 的 if 语句。使用IE11时传入的参数是正确的
cntId
= 100,InitialLoad
= 真,showProgress
= 假,startExport
= 假
但是,在调试 Edge、Chrome、Firefox 和 Safari 时,我得到以下参数:
cntId
= 100,InitialLoad
= 假,showProgress
= 假,startExport
= 假
我不确定为什么 Edge、Chrome、Firefox 和 Safari 会丢失参数。四个的url和IE11的一样
话虽如此,欢迎就此问题提出任何想法。
我想通了这个问题。由于某些奇怪的原因,Edge、Chrome、Firefox 和 Safari 没有正确处理“&”。我知道 & 符号是一个被编码的值,但奇怪的是每个浏览器都无法自行解码它。当我为他们简化它时,它起作用了。
IE11 是唯一出于某种奇怪原因处理它的。
无论如何,这只是一个奇怪的问题,在打开弹出窗口时没有专门处理参数。