Jquery ダイアログで MVC C# を使用しています。POST を実行すると、ダイアログ ボックスではなく通常のページにリダイレクトされます。
私のコードは次のようになります。
内部ビュー:
<div id="dialog" title="" style="overflow: hidden;">
</div>
私のクリックイベント内には、次のものがあります。
$('#dialog').dialog({
autoOpen: false,
width: 500,
resizable: true,
title: 'PVT Report',
modal: true,
buttons: {
"Close": function () {
$(this).dialog("close");
}
}
});
$('#dialog').dialog('open');
$.ajax({
url: url,
type: 'GET',
success: function(result) {
if (result.success)
{
$('#dialog').dialog('close');
}
else
{
$('#dialog').html(result);
}
}
});
}
URL に問題なくアクセスし、ダイアログ ボックスを表示します。POST を実行すると、ダイアログ ボックスに戻らず、代わりに通常のページに移動します。
以下は私のGETとPOSTです:
public ActionResult FileUpload(int id)
{
var model = new FileUpload { PlNum = id}
return PartialView(model);
}
[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase file, FileUpload model)
{
// Verify that the user selected a file
if (file != null && file.ContentLength > 0)
{
// extract only the fielname
var fileName = Path.GetFileName(file.FileName);
string extension = Path.GetExtension(file.FileName);
if (extension != ".pdf")
{
TempData["ErrMessage"] = "Error, wrong file type. File must be a PDF file.";
return RedirectToAction("FileUpload", new { id = model.PlNum });
}
.....
これが私の見解です:
@using (Html.BeginForm("FileUpload", "Plt", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.HiddenFor(a => a.PlNum)
<p>File upload for Pl# @Model.PlNum</p>
<input type="file" name="file" />
<input type="submit" value="OK" />
}
$.ajax でやればいいと思いました。私の問題の 1 つは、redirecttoAction を実行すると、ダイアログ ボックスが開かなくなることだと思います。
いずれにせよ、成功した場合でも成功しなかった場合でも、ダイアログ ボックスに戻りたいと思います。成功すると、「成功しました」というメッセージが表示されます。成功しない場合は、エラー メッセージが表示されます。