2016-12-28 82 views
0

我有一個主要的腦凍結: 我有一個MVC 5項目,使用引導彈出窗體日期數據輸入。在主着陸頁上調用popovers並將數據字符串化JSON轉發給Home控制器中的ActionResult函數,然後它訪問SQL服務器數據庫並返回一個JSON數據集,該數據集用於構建在cshtml視圖中呈現的基於D3的可視化。 到目前爲止,每件事情都有效,數據是有效的模型,並已經過單元測試。家庭控制器有兩個控制器: 的酥料餅的js腳本(從http://jsfiddle.net/itsabhik/cxm4rt2u/2/那兒剽竊):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 */ 
    } 

,我遇到的問題是,所有的重定向變化是我用throw 404找不到異常。調用無參數的ActionResult的RedirectToAction(...)會引發403異常。 cshtml文件存在,路徑已經過驗證並且正確。

正在使用的瀏覽器是Chrome。缺少什麼 - 有關這個問題的任何線索,建議?

+0

你爲什麼要重定向回來我不知道,但如果你只是從您的主頁/ LoanCount返回視圖 - 做路線的工作? –

+0

我想使用彈出式窗體從主頁面傳遞SQL查詢參數。這些參數產生一系列數據以評估企業中不同實體的流程績效。 – Maris

+0

我想使用通過彈出窗體輸入的數據從主應用程序頁面傳遞SQL查詢參數。這些參數產生一系列數據來評估過程績效,並且通常生成企業中不同實體的BI儀表盤。 Home/LoanCount路線工作正常,並在第一次切割中實施,以測試基於D3的可視化頁面。 SQL查詢參數在模型類中被硬編碼以簡化調試過程。希望這是有道理的。 – Maris

回答

0

您可以使用代字號(〜)前綴返回視圖。由於這個原因,URL不會被改變。

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

如果你想改變,你必須使用RedirectToAction方法與控制器的名稱和方法名的URL。

0

上一條評論:胖手指的Enter鍵。解決的辦法是禁用ajax func,因爲它發佈了一個回調函數,用參數值重做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"); 
    }