CSVファイルと文字列をポストするAJAX POSTがあります。これが受信されます。私はこのデータを処理し、詳細をデータベースに挿入します - 成功。戻り値としてオブジェクトとして新しいレコードを返します。これは、ビューで使用されるモデルでもあります。成功しました。MVC6 Ajax POST - ファイルは処理されましたが、データでもビューが返されません
私は返信としてこれを送り返し、何も表示に何も起こりません。その更新されません。
私は他のポストでこれを探しました - いくつかのPHPとAjax POSTを使用するとHttpPostの結果はうまくいかないことを示すいくつかの兆候..しかし、これはうまく動作します。 Ajax投稿 ここに私のコントローラのアクションは、次のとおりです。
// GET: /SuburbsAndPostcodesAdminController/
public IActionResult FileIndexView()
{
var InitialDisplayView = new NewSuburbsAndPostcodesImported
{
Message = "Nothing imported yet.",
SuburbAndPostcodesImported = null
};
return View("FileIndexView", InitialDisplayView);
}
// POST: /SuburbsAndPostcodesAdminController/Index
[HttpPost]
public IActionResult FileIndexView(CSVFileUploadViewModel CSVFileUpload)
{
if (ModelState.IsValid)
{
//Process the file
NewSuburbsAndPostcodesImported FileProcessed = _service.ProcessCSV(CSVFileUpload);
return View("FileIndexView", FileProcessed);
}
return View();
}
私は、「ビューを返します(」FileIndexViewにブレークポイントを持っている「FileProcessedを);」 FileProcessedは正しいデータを持っています。
CSHTMLファイルは次のとおりです。ここで
@model ProgressBar2.ViewModels.NewSuburbsAndPostcodesImported
@{
ViewData["Title"] = "Suburbs and Postcodes Upload page";
}
...
<div>
<h4>
@Html.DisplayFor(modelItem => Model.Message)
</h4>
</div>
@if (Model.SuburbAndPostcodesImported != null)
{
<table class="table">
<tr>
<th>
...
</th>
<th>
...
</th>
<th>
...
</th>
</tr>
@foreach (var item in Model.SuburbAndPostcodesImported)
{...
EDITは、AJAX POST機能である:
$('#SubmitFile').click(function (e) {
e.preventDefault(); // <------------------ stop default behaviour of button
//var fileUpload = input.files[0];
var url = "/SuburbsAndPostcodesAdmin/FileIndexView";
var connId = $.connection.hub.id;
var fd = new FormData();
fd.append('File', $("#txtFileUpload")[0].files[0]);
fd.append('connId', connId);
$.ajax({
type: "POST",
url: url,
data: fd,
processData: false,
contentType: false,
});
});
なぜこの更新にビューを文句を言いませんか?
ビューの更新とリストのレンダリングを確実に行うにはどうすればよいですか?
AJAXコールを作成して成功コールバックのビューを*更新*するコードを表示できますか?また、部分的な見解を返すべきではありませんか? –
私はAjax呼び出しを追加しました。私はそれがビューのコンポーネントが必要だと思うが、私はそれが私がちょうど送信フォームを使用していたときに更新されたことがわかった。私はAjax投稿をするときに問題があると思っています。おそらく他の人がAjaxを使ってこれを行う正しい方法を特定しています... – si2030
DOMを更新するためにAJAXリクエストの 'success'コールバックを購読したことはありません。これは、AJAXを使わないでフォームを送信すると動作します。この場合、ページ全体がリロードされるからです。 AJAXの全体のポイントは、ページ全体をリロードせずにサーバーにHTTPリクエストを行うことができることです。下の私の答えを見てください。 –