2016-12-28 6 views
0

私は大きな脳の凍結をしています: 私は、日付データ入力用のブートストラップポップオーバーフォームを使用するMVC 5プロジェクトを持っています。ポップオーバーはメインランディングページで呼び出され、データはストリングJSONがHomeコントローラのActionResult関数に転送され、SQLサーバーdbにアクセスし、cshtmlビューでレンダリングされたD3ベースのビジュアリゼーションを構築するために使用されるJSONデータセットを返します。 この時点まで、すべてのものが有効です。データは有効です。つまり、ユニットテストされています。 ポップオーバーのjsスクリプト(http://jsfiddle.net/itsabhik/cxm4rt2u/2/からcribbed):ASP.Net MVC 5 ActionResult 404例外を投げる

 $('.main-attributes').on('shown.bs.popover', function() { 
     $('.submit').click(function() { 
      var fromval = $('.popover #fromvalue').val(); 
      var toval = $('.popover #tovalue').val(); 
        var option = { 
         url: '/Home/LoanCount', 
         data: JSON.stringify({ dStart: fromval, dEnd: toval }), 
         method: 'post', 
         dataType: 'json', 
         contentType: 'application/json;charset=utf-8' 
        }; 

      $.ajax(option).done(function (data) { 
         return (data); 
      }) 
      $('.main-attributes').popover('hide'); 
     }); 
     $('.cancel').click(function() { 
      $('.main-attributes').popover('hide'); 
     }); 
    }); 

とコントローラコード:

 public ActionResult LoanCount(DateTime dStart, DateTime dEnd) 
    { 
     int iStart = (dStart.Year * 10000) + (dStart.Month * 100) + dStart.Day; 
     int iEnd = (dEnd.Year * 10000) + (dEnd.Month * 100) + dEnd.Day; 

     var json = Models.LoanCount.getCountStats (iStart, iEnd); 
     var data = JsonConvert.DeserializeObject<List<Models.LoanCount>> (json); 

     ViewBag.jData = json; 

     return Redirect ("/Views/Home/LoanCount.cshtml"); /* This is one of the 
            redirect variations            that have been tried */ 
    } 

私が午前問題は、そのすべてのリダイレクトのバリエーションがあるホーム制御には、2つのコントローラを持っています私は404例外が見つかりませんをスロー使用します。パラメータなしのActionResultであるRedirectToAction(...)を呼び出すと、403の例外がスローされます。 cshtmlファイルが存在し、パスが検証され正しい。

使用されているブラウザはChromeです。欠けているもの - 手がかり、この問題に関する助言?

+0

あなたはリダイレクトが返さたいなぜ私はわからないんだけど、あなたは自分のホーム/ LoanCountからビューを返す場合 - ルートに動作しますか? –

+0

popoverフォームを使用してメインページからSQLクエリパラメータを渡したいと思います。このパラメータは、エンタープライズ内のさまざまなエンティティのプロセスパフォーマンスを評価するための一連のデータを生成します。 – Maris

+0

popoverフォームで入力したデータを使用して、メインアプリケーションページからSQLクエリパラメータを渡したいとします。このパラメータは、プロセスのパフォーマンスを評価し、一般に企業内の異なるエンティティのBIダッシュボードを生成するための一連のデータを生成します。 Home/LoanCountルートは正常に動作し、D3ベースの視覚化ページをテストするために最初のカットで実装されました。 SQLクエリパラメータは、デバッグプロセスを簡略化するためにモデルクラスでハードコードされていました。希望は意味をなさない。 – Maris

答えて

0

ティルド(〜)接頭辞付きのビューを返すことができます。このため、URLは変更されません。

return View("~/Views/Home/LoanCount.cshtml"); 

あなたは、コントローラ名とメソッド名を持つRedirectToActionメソッドを使用する必要がURLを変更したい場合。

0

前のコメント:太い指でEnterキーを押した。修正は、コールバックをポストしていたので、ajax関数を無効にし、パラメータ値でURLをやり直して、ajax呼び出しを発行するのではなくウィンドウの場所を定義することでした。今は期待どおりに動作しています。すごい!!

 $('.main-attributes').on('shown.bs.popover', function() { 
     $('.submit').click(function() { 
      var fromval = $('.popover #fromvalue').val(); 
      var toval = $('.popover #tovalue').val(); 
      var option = { 
       url: "/Home/LoanCount?dStart=" + fromval + "&" + "dEnd=" + toval, 
       data: JSON.stringify({ dStart: fromval, dEnd: toval }), 
       method: 'post', 
       dataType: 'json', 
       contentType: 'application/json;charset=utf-8' 
      }; 

      window.location.href = option.url; 

      $('.main-attributes').popover('hide'); 
     }); 

     $('.cancel').click(function() { 
      $('.main-attributes').popover('hide'); 
     }); 
    }); 

コントローラ:

 public ActionResult LoanCount(DateTime dStart, DateTime dEnd) 
    { 
     int iStart = (dStart.Year * 10000) + (dStart.Month * 100) + dStart.Day; 
     int iEnd = (dEnd.Year * 10000) + (dEnd.Month * 100) + dEnd.Day; 

     var json = Models.LoanCount.getCountStats (iStart, iEnd); 
     var data = JsonConvert.DeserializeObject<List<Models.LoanCount>> (json); 

     ViewBag.jData = json; 

     return View ("~/Views/Home/LoanCount.cshtml"); 
    } 
関連する問題