【发布时间】:2013-02-05 06:07:53
【问题描述】:
我正在使用带有 Jquery 对话框的 MVC C#。当我做一个 POST 时,我被重定向到一个普通页面 vs 对话框。
我的代码如下所示:
内部视图:
<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 会很好。我认为我的问题之一是当我执行重定向操作时,对话框不再 打开..
请注意,无论哪种方式,如果成功或不成功,我都喜欢返回对话框。如果成功,将显示“成功”的消息。如果不成功,将出现错误消息。
【问题讨论】:
-
发帖后
$('#dialog').dialog('close');被解雇了吗? -
不确定这是否能回答您的问题,但是当视图出现时,我可以在对话框中的 Close 上点赞,它工作正常。如果我进行提交,我将被重定向到正常页面 - 不会返回对话框。希望这能回答你的问题。谢谢
-
当你发帖时,你必须有一些 jquery 才能再次“打开”对话框。你是怎么处理的?你说“在我的点击事件中”是什么点击事件?
-
我目前没有处理这个问题,像这样的脚本通常会去哪里。请注意,我正在使用 Jqgrid,因此单击单元格时我需要启动此对话框。这就是我上面提到的脚本的地方。
-
你熟悉
@Ajax.BeginForm(...吗? stackoverflow.com/questions/5410055/…
标签: jquery asp.net-mvc-3 jquery-ui-dialog