下面是一些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!
如果您找到解决方案,请将其作为答案并将答案标记为已接受。这个问题仍然没有解决。 – LukLed 2010-03-14 04:17:12
是的,先生!马上就是mon capitan! – w4ik 2010-03-15 14:04:56