我正在使用带有 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 会很好。我认为我的问题之一是当我执行重定向操作时,对话框不再打开..
请注意,无论哪种方式,如果成功或不成功,我都喜欢返回对话框。如果成功,将显示“成功”的消息。如果不成功,将出现错误消息。