【发布时间】:2012-07-25 23:52:09
【问题描述】:
我是 ASP.NET MVC 的新手;我遇到的问题是从 jqueryUI 对话框表单中获取数据并将其传递给控制器,这样我就可以将表单输入保存到数据库中。
由于某种原因,我的控制器中处理此问题的方法没有被调用,尽管它似乎在 jquery 代码中被正确引用。这是我在视图中的内容(我显然省略了大部分代码,只是将相关部分放在这里以方便阅读):
<a href="#" id="dialog_link">Open Dialog Box</a>
<div id="dialog" title="MakeSomeSampleNote">
<form id="testform" method="post">
<input id="tbx_casenote" name="tbx_casenote" type="text" style="height:50px; width:200px;" />
</form>
</div>
$("#dialog").dialog({
autoOpen: false,
resizable: true,
height: 210,
width: 510,
modal: true,
buttons: {
"Ok": function () {
var noteval = $("#tbx-casenote").val();
$.ajax({
type: "POST",
url: "@Url.Action("NoteController/SaveNote")",
data: { content: tbx_casenote_val },
cache: false,
dataType: "json",
success: function (data) {
$("#dialog").dialog("close");
}
});
},
"Cancel": function () {
$(this).dialog("close");
}}
});
$('dialog_link').click(function () {
$('#dialog').dialog('open');
return false;
});
这是我在控制器中使用的方法;调试时,在我测试对话框表单并单击“确定”按钮后,此方法永远不会被命中:
[HttpPost]
public JsonResult SaveNote(string NoteText)
{
//code to save this note to database - not relevant to question
return Json(new { success = true });
}
谢谢。
【问题讨论】:
-
既然你设置了
autoOpen: false,你在哪里打开/显示对话框?此外,您似乎在 AJAX 调用中使用了一些tbx_casenotejavascript 变量,不清楚在哪里定义。 -
编辑了我原来的帖子来回答你的问题。谢谢
-
好的,我对代码进行了一些更改,并更新了我的帖子以反映这一点。不再出现“堆栈空间不足”错误。现在只是似乎什么都没有发生;控制器中的 SaveNote 方法永远不会从 jquery 调用,这就是它现在所在的位置。
标签: jquery asp.net-mvc jquery-ui-dialog