不使用 QueryString 传递参数
Pass parameters without using QueryString
我有一个 MVC 应用程序。在一个页面上,我有一个显示 bootstrap-table 的局部视图。我有一些 javascript 代码在双击 table 行时触发。此代码从双击的行中检索一些值并构造一个 url 然后导航到那个 url.
这很好用,但我创建 url 的方式意味着我在 url 中有作为查询字符串可见的数据。如何在不使用查询字符串的情况下实现导航。哦,如果可能的话,我需要导航到新的 window/tab。
我的 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 调用,但我认为我无法将其作为新的 window/tab.
打开
感谢任何帮助。
更新
我找到了以下 ajax.post 方法,它为我提供了我想要的文档...在开发人员工具(Chrome/IE 中的 F12)中使用网络选项卡,我可以看到对文档,如果我预览它,它会显示数据。但该页面未显示在浏览器中。
开一家新店 window/tab 不是必需的,但最好有。
我的新代码取代了...
//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
您必须结合使用回发和 Session。
AJAX Post(如您所见)将值发送回服务器。
在处理该回发的 MVC 操作方法中,将值保存到 Session:
Public Function ViewMonth(...) As JsonResult
Session("SavedMonth") = New MonthObj(pn, cm, cy, mt, cod)
Return Json(True)
End Function
当AJAXPostreturns成功后,用不同的URL:[=14=打开一个新的window ]
success : function(response) {
window.open('/ClaimMonth/AfterSave');
},
该 URL 的 MVC 操作方法从会话加载保存的数据,然后显示它。
Public Function AfterSave() As ViewResult
Dim model As MonthObj = TryCast(Session("SavedMonth"), ModelObj)
Return View(model)
End Function
我有一个 MVC 应用程序。在一个页面上,我有一个显示 bootstrap-table 的局部视图。我有一些 javascript 代码在双击 table 行时触发。此代码从双击的行中检索一些值并构造一个 url 然后导航到那个 url.
这很好用,但我创建 url 的方式意味着我在 url 中有作为查询字符串可见的数据。如何在不使用查询字符串的情况下实现导航。哦,如果可能的话,我需要导航到新的 window/tab。
我的 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 调用,但我认为我无法将其作为新的 window/tab.
感谢任何帮助。
更新
我找到了以下 ajax.post 方法,它为我提供了我想要的文档...在开发人员工具(Chrome/IE 中的 F12)中使用网络选项卡,我可以看到对文档,如果我预览它,它会显示数据。但该页面未显示在浏览器中。
开一家新店 window/tab 不是必需的,但最好有。
我的新代码取代了...
//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
您必须结合使用回发和 Session。
AJAX Post(如您所见)将值发送回服务器。
在处理该回发的 MVC 操作方法中,将值保存到 Session:
Public Function ViewMonth(...) As JsonResult Session("SavedMonth") = New MonthObj(pn, cm, cy, mt, cod) Return Json(True) End Function
当AJAXPostreturns成功后,用不同的URL:[=14=打开一个新的window ]
success : function(response) { window.open('/ClaimMonth/AfterSave'); },
该 URL 的 MVC 操作方法从会话加载保存的数据,然后显示它。
Public Function AfterSave() As ViewResult Dim model As MonthObj = TryCast(Session("SavedMonth"), ModelObj) Return View(model) End Function