2010-03-12 48 views
2

下面是一些HTML的POST調用RedirectToAction但視圖中RedirectToAction規定不會被渲染

<form id="frmSubmit" action="/Viewer" style="display:none;">    
     <div id="renderSubmit" class="renderReport">     
      <input type="hidden" name="reportYear" id="reportYear" value="" /> 
      <input type="hidden" name="reportMonth" id="reportMonth" value="" /> 
      <input type="hidden" name="propIds" id="propIds" value="" />     
      <input type="hidden" name="reportName" id="reportName" value="" />             
      <input type="hidden" name="reportYearFrom" id="reportYearFrom" value="" /> 
      <input type="hidden" name="reportMonthFrom" id="reportMonthFrom" value="" />     
      <input type="hidden" name="reportYearTo" id="reportYearTo" value="" /> 
      <input type="hidden" name="reportMonthTo" id="reportMonthTo" value="" />     
     </div>  
    </form> 

一點點進一步下跌的頁面

<div id="reportList" class="renderReport">  
     <fieldset style="width:105%;"> 
     <legend class="reportStepLegend">Step 3. <br /> Click a report name below to view a report</legend>     
      <br />     
      <% foreach (ReportMetaData item in (ReportMetaDataContainer)ViewData.Model) { %>      
       <div>       
        <input id=<%=item.SSRSName%> type="button" class="reportLink" value="<%=item.DisplayName%>" /> 
       </div>      
      <%}%> 
     </fieldset> 
    </div> 

這裏的按鈕被點擊時調用的JavaScript

$('.reportLink').click(function() { 
    if (CheckDateAndProps() === true) { 
     $('#reportName').val(this.id); 
     var formData = $("#frmSubmit").serializeArray(); 
     $.post('Home/PostViewer/', formData); 
    } 
}); 

注意......我確實有.post的$像這樣前面...但它沒有看到米到任何區別

 $.post('Home/PostViewer/', 
         formData, 
         function(data) { 
          alert(data.Result); 
         }, "json"); 

這裏的控制器代碼

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult PostViewer(string reportYear, 
           string reportMonth, 
           string propIds, 
           string reportName, 
           string reportYearFrom, 
           string reportMonthFrom, 
           string reportYearTo, 
           string reportMonthTo) 
    { 
     return RedirectToAction("Viewer"); 
    } 

所有這些都是好的世界到這point..I'm打上面的方法,並填充所有的值。

這裏的GET方法的ActionResult

[AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult Viewer(string reportYear, 
           string reportMonth, 
           string propIds, 
           string reportName, 
           string reportYearFrom, 
           string reportMonthFrom, 
           string reportYearTo, 
           string reportMonthTo) 
    { 
     return View(); 
    } 

我打這個太...在參數沒有看到任何價值......但是這只是因爲我還沒有與他們擦肩而過尚未...我不認爲這是保持查看器頁面顯示的內容?

現在......人們會期望查看器視圖被渲染......對吧?......我所看到的就是這個被調用的頁面......瀏覽器頁面從不被渲染? !!?!?

下面是Global.asax的

 routes.MapRoute(
      "Viewer",          // Route name 
      "Home/Viewer",         // URL with parameters 
      new { controller = "Home", action = "Viewer" } // Parameter defaults         
     ); 

     routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 

路由我可以直接瀏覽頁面 http://localhost:50083/Home/Viewer ,當我這樣做,我打的ActionResult方法和頁面呈現就好了。

任何幫助,非常感謝!

編輯

得到它的工作...有把按鈕形式 所以現在的形式看起來像這樣

 <form id="frmSubmit" name="frmSubmit" action="/Home/Viewer" method="post" target="_blank"> 
     <div id="renderSubmit" class="renderReport">     
      <input type="hidden" name="reportYear" id="reportYear" value="" /> 
      <input type="hidden" name="reportMonth" id="reportMonth" value="" /> 
      <input type="hidden" name="propIds" id="propIds" value="" />     
      <input type="hidden" name="reportName" id="reportName" value="" />             
      <input type="hidden" name="reportYearFrom" id="reportYearFrom" value="" /> 
      <input type="hidden" name="reportMonthFrom" id="reportMonthFrom" value="" />     
      <input type="hidden" name="reportYearTo" id="reportYearTo" value="" /> 
      <input type="hidden" name="reportMonthTo" id="reportMonthTo" value="" />     
     </div> 
     <div id="reportList" class="renderReport">  
      <fieldset style="width:105%;"> 
      <legend class="reportStepLegend">Step 3. <br /> Click a report name below to view a report</legend>     
       <br />     
       <% foreach (ReportMetaData item in (ReportMetaDataContainer)ViewData.Model) { %>      
        <div>       
         <input id=<%=item.SSRSName%> type="button" class="reportLink" value="<%=item.DisplayName%>" /> 
        </div>      
       <%}%> 
      </fieldset> 
     </div> 
    </form> 

和JavaScript看起來像這樣

$('.reportLink').click(function() { 
    if (CheckPropIds() === true) { 
     $('#reportName').val(this.id); 
     $("#frmSubmit").submit(); 
    } 
}); 

它點擊這裏的控制器代碼

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Viewer(string reportYear, 
           string reportMonth, 
           string propIds, 
           string reportName, 
           string reportYearFrom, 
           string reportMonthFrom, 
           string reportYearTo, 
           string reportMonthTo) 
    { 
     if (reportName == "foobar") 
     {     
      return RedirectToAction("FoobarView"); 
     } 
     else 
     { 
      return View("Viewer"); 
     } 
    } 

and voila!...我看到視圖!...如果reportName是foobar ...我看到FoobarView!

+0

如果您找到解決方案,請將其作爲答案並將答案標記爲已接受。這個問題仍然沒有解決。 – LukLed 2010-03-14 04:17:12

+0

是的,先生!馬上就是mon capitan! – w4ik 2010-03-15 14:04:56

回答

1

明白了......有把按鈕形式 所以現在的形式看起來像這樣

 <form id="frmSubmit" name="frmSubmit" action="/Home/Viewer" method="post" target="_blank"> 
     <div id="renderSubmit" class="renderReport">     
      <input type="hidden" name="reportYear" id="reportYear" value="" /> 
      <input type="hidden" name="reportMonth" id="reportMonth" value="" /> 
      <input type="hidden" name="propIds" id="propIds" value="" />     
      <input type="hidden" name="reportName" id="reportName" value="" />             
      <input type="hidden" name="reportYearFrom" id="reportYearFrom" value="" /> 
      <input type="hidden" name="reportMonthFrom" id="reportMonthFrom" value="" />     
      <input type="hidden" name="reportYearTo" id="reportYearTo" value="" /> 
      <input type="hidden" name="reportMonthTo" id="reportMonthTo" value="" />     
     </div> 
     <div id="reportList" class="renderReport">  
      <fieldset style="width:105%;"> 
      <legend class="reportStepLegend">Step 3. <br /> Click a report name below to view a report</legend>     
       <br />     
       <% foreach (ReportMetaData item in (ReportMetaDataContainer)ViewData.Model) { %>      
        <div>       
         <input id=<%=item.SSRSName%> type="button" class="reportLink" value="<%=item.DisplayName%>" /> 
        </div>      
       <%}%> 
      </fieldset> 
     </div> 
    </form> 

和JavaScript看起來像這樣

$('.reportLink').click(function() { 
    if (CheckPropIds() === true) { 
     $('#reportName').val(this.id); 
     $("#frmSubmit").submit(); 
    } 
}); 

它擊中這裏的控制器代碼

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Viewer(string reportYear, 
           string reportMonth, 
           string propIds, 
           string reportName, 
           string reportYearFrom, 
           string reportMonthFrom, 
           string reportYearTo, 
           string reportMonthTo) 
    { 
     if (reportName == "foobar") 
     {     
      return RedirectToAction("FoobarView"); 
     } 
     else 
     { 
      return View("Viewer"); 
     } 
    } 

和瞧!!我看到視圖!...如果reportName是foobar ...我看到FoobarView!