下面是一些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