使用ASP.NET MVC3将表单数据从jqueryUI对话框传递到控制器

时间:2012-01-21 22:22:27

标签: jquery asp.net-mvc jquery-ui-dialog

我是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 });

 }

感谢。

2 个答案:

答案 0 :(得分:2)

我认为你的@Url.Action错了。你试过@Url.Action("SaveNote", "Note")吗?

为了使这个问题成为一个完整的答案,问题是“控制器”一词不应出现在Url.Action调用中。以下各项都有效:

@Url.Action("SaveNote", "Note")

...或

@Url.Action("Note/SaveNote")

答案 1 :(得分:1)

您可以将网址设为“controlname / methodname”