我正在使用C#和.NET Framework 4.7开发ASP.NET MVC应用程序。
我有这个重定向:
return RedirectToAction("Index", "ProductionOrder", new { isWizard = viewModel.IsWizard });
这是方法ProductionOrderController.Index
的签名:
// GET: ProductionOrder
public ActionResult Index(bool isWizard = false)
当我在网络浏览器上调用此方法时,我会收到以下网址:
http://VANSFANNEL:53827/ProductionOrder?isWizard=True
有没有办法隐藏参数isWizard
并且不在网址中显示它?
答案 0 :(得分:3)
不,没有。重定向始终是HTTP GET,因此您无法对隐藏它的参数进行POST。
我不知道您的确切要求,但如果您可以重写代码以成为POST,那么这将是从URL中删除参数的最简单方法。否则,您可能希望将其保存在其他位置:在会话变量中或对值进行模糊处理,以便稍后对其进行反散列。
答案 1 :(得分:1)
在这种情况下,您真正应该做的是返回视图而不是重定向。
像:
var app = angular.module('myApp', [])
app.directive('counter',
function($timeout) {
return {
restrict: 'EAC',
template: `<div>Directive Counter: {{internalCount}}</div>`,
scope: {
internalCount: '=model2'
},
compile: function(element, attrs) {
return function(scope, element, attrs) {
scope.$watch('internalCount', function() {
console.log("hrruy!!!");
console.log(scope.internalCount);
}, true);
//addCount();
}
}
};
}
)
app.controller('myCtrl', function($scope,$timeout) {
console.log("MAin Controller!! works!!!");
$scope.count1 = 10;
function addCount() {
$timeout(function() {
//$scope.internalCount += 1;
$scope.count1+=1;
//addCount();
}, 1000)
}
$scope.$watch('count1', function() {
console.log("Main-hrruy!!!");
addCount();
console.log($scope.count1);
}, true);
});
但是如果您真的更喜欢进行重定向,可以将ViewModel放在TempData中,然后重定向到该操作:
return View(viewModel);
在重定向的操作中:
TempData["MyViewModelFromRedirect"] = viewModel;