发布调用RedirectToAction但不呈现RedirectToAction中指定的视图

时间:2010-03-12 16:04:53

标签: jquery asp.net-mvc

这是一些html

    <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");
    }

到目前为止,世界上一切都很好。我正在使用上述方法并填充所有值。

这是获取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();
    }

我也打了这个...没有在参数中看到任何值...但那只是因为我还没有通过它们......我不认为这是保持Viewer页面不显示?

现在......人们会期望渲染Viewer视图......对吗?...我所看到的就是从这里调用的页面......查看器页面永远不会被渲染???! !?!?

这是来自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");
        }
    }

瞧!...我看到了视图!...如果reportName是foobar ......我看到了FoobarView!

1 个答案:

答案 0 :(得分: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!