特定のレポートを表示する一連のデータを表示する実用的な MVC ページを作成しました (上位顧客の支出額)。ユーザーがそのレポートを開始日と終了日でバインドできるようにする 2 つの jQuery datepicker テキストボックスを追加しようとしています。ハンドラーを開始するjQueryクリックイベントがバインドされたHTMLアンカータグがあるという点で、現在機能しています。ハンドラーは開始日/終了日をコントローラーの HttpPost ActionResult メソッドに投げ、更新されたデータ セットを取得します。
問題は、(Content("true") を返すのではなく) ビューにデータを返そうとすると、データが返されず、ハンドラーから OnFailure メッセージが返されることです。この方法でビューにデータを渡すことは可能ですか、それとも Html.BeginForm タイプのアプローチを使用してデータを書き直す必要がありますか?
本当にありがとう!
コードは次のとおりです:(私の見解では)
<script type="text/javascript">
$(document).ready(function () {
$(".datepicker").datepicker();
$('#submit').click(function () {
SetDateHandler($('#startdate').val(), $('#enddate').val(), "company");
});
function SetDateHandler(bounddate1, bounddate2, datetype) {
$.ajax({
//url: '/Projects/TestArray',
url: '@Url.RouteUrl("SetBoundingDate")',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: OnComplete,
data: JSON.stringify({ startdate: bounddate1, enddate:bounddate2, type: datetype }),
traditional: true,
type: "POST",
error: OnFail
});
return false;
}
function OnComplete(result) {
//indow.location.href = window.location.href;
alert("yay!");
return true;
}
function OnFail(result) {
alert('Request Failed');
return false;
}
});
</script>
<h2>Top Companies by Total Price for Won Quotes</h2>
<div style="float:right; width: 350px; margin: 15px;">
<span style="float:right; margin-right: 50px;">Start Date: <input class="datepicker" id="startdate" /></span>
<br />
<span style="float:right; margin-right: 50px;">End Date: <input class="datepicker" id="enddate" /></span>
<br />
<a href="#" id="submit">Submit</a>
</div>
カスタム ルート: routes.MapRoute( name: "SetBoundingDate", url: "AjaxSetBoundingDate", defaults: new { controller = "Reports", action = "SetBoundingDates" } );
私のレポートコントローラーで:
[HttpPost]
public ActionResult SetBoundingDates(String startdate, String enddate, String type)
{
Schedule.Models.Reports.TopCompaniesModel Companies = new Models.Reports.TopCompaniesModel();
ActionResult view;
if (type == "company")
{
view = TopCompaniesReport(startdate, enddate);
}
else
{
view = TopContactsReport(startdate, enddate);
}
//return View(view);
return Content("true");
}
繰り返しますが、ここまで読んだ場合、ビューが正しく満たされた状態で Controller メソッドの最後にたどり着きますが、View を返そうとするとエラーになり、Content("true") を返すと動作しますが何もしませんページで変更します。
ありがとう!