URL中的Hiddent参数

时间:2017-06-23 06:54:14

标签: c# asp.net asp.net-mvc

我正在使用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并且不在网址中显示它?

2 个答案:

答案 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;
相关问题