我有一个MVC应用程序。在一个页面上,我有一个显示引导表的局部视图。我有一些javascript代码,当表格行被双击时触发。此代码从双击行中检索一些值并构造一个url,然后导航到该URL。传递参数而不使用QueryString
这工作正常,但我创建的网址的方式意味着我有数据可见作为网址中的querystrings。如何在不使用querystrings的情况下实现导航。哦,我需要导航到一个新的窗口/选项卡,如果可能的话。
我对双击JavaScript代码:
$mTable.on('dbl-click-row.bs.table', function (e, row, $element) {
var cod = $('#hdCOD').val();
var mv = mGetSelectedRow().CMonth;
var yv = mGetSelectedRow().CYear;
var diff_cv = moment.utc(cod).diff(moment.utc(yv + '-' + pad(mv, 2) + '-' + '24'), 'months', true);
var plcf = '';
switch(true) {
case (diff_cv >= 2):
plcf = 'past';
break;
case (diff_cv >= 1 && diff_cv < 2):
plcf = 'last';
break;
case (diff_cv >= 0 && diff_cv < 1):
plcf = 'current';
break;
case (diff_cv < 0):
plcf = 'future';
}
var url = 'ClaimMonth/ViewMonth?pn=' + mGetSelectedRow().Cpid + '&cm=' + mv + '&cy=' + yv + '&mt=' + plcf + '&cod=' + cod;
window.open(url, '_blank');
})
局部视图是使用剃刀语法叫:
Html.RenderAction("GetSummaryForAdmin", New With {Key .pn = Model.PersonelNo})
我似乎无法找到在JavaScript中模仿等效功能New With {Key .pn = Model.PersonelNo}
我也不确定这是否是这样做的。我已经考虑过Ajax调用,但我不认为我可以将它作为新窗口/选项卡打开。
任何帮助表示赞赏。
UPDATE
我发现使用网络选项卡中,我可以看到通话,给我我想要的文件......在开发工具(在Chrome/IE F12)以下ajax.post方法对于文档,如果我预览它,它会显示数据。但该页面不显示在浏览器中。
在新窗口/标签中打开并不是必需条件,但会很高兴。
我的新代码替换...
//var url = 'ClaimMonth/ViewMonth?pn=' + mGetSelectedRow().Cpid + '&cm=' + mv + '&cy=' + yv + '&mt=' + plcf + '&cod=' + cod;
//window.open(url, '_blank');
与...
$.ajax({
type : "post",
url : "ClaimMonth/ViewMonth",
data : {pn: mGetSelectedRow().Cpid, cm: mv, cy: yv, mt: plcf, cod: cod },
success : function(response) {
window.open();
},
error : function(xhr) {
console.log("error"+xhr.status);
},
complete : function() {
}
});
,我改变了我的控制器功能,接受参数,而不是阅读的Request.QueryString
,那么几乎你必须使用查询字符串。在页面之间移动并传输数据的唯一方式是使用POST提交表单提交。然后我不确定您可以在单独的选项卡中打开结果。但是,当然,即使这样,一个好奇的用户也可以通过观看网络(通过浏览器工具或任何其他适当的软件)轻松查看POST中传递的参数。你为什么要隐藏这些数据?它看起来像你试图隐藏的所有值都可以在任何地方的页面上找到 – ADyson
@ADyson correct ..这些值不敏感......但客户更喜欢干净的网址。我遇到了一些使用Post的代码,但没有显示结果。查看我的更新 – Mych
'window.open();'只是打开一个没有内容的空白窗口。有趣的观察你的客户,我从来没有遇到任何用户甚至注意到他们的URL栏中有什么(在某些情况下,他们没有注意到不知道他们是否在测试系统或者住一个),不要介意看它是否看起来整洁。 – ADyson