2012-01-21 51 views
2

我是ASP.NET MVC的新手;我遇到麻煩的是從jqueryUI對話框表單獲取數據並將其傳遞給控制器​​,以便我可以將表單輸入保存到數據庫中。將表單數據從jqueryUI對話框傳遞給ASP.NET MVC3控制器

在我的控制器中處理此方法不會因爲某種原因而被調用,儘管它似乎在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 }); 

} 

謝謝。

+0

既然你已經設置'的AutoOpen:假'你在哪裏打開/顯示對話框?此外,您似乎在AJAX調用中使用了一些'tbx_casenote' JavaScript變量,該變量不清楚在哪裏定義。 –

+0

編輯我原來的帖子來回答你的問題。謝謝 – Matt

+0

好的,我對代碼進行了一些更改,並更新了我的帖子以反映這一點。不再遇到'堆棧空間不足'的錯誤。現在看來沒有什麼事情了,控制器中的SaveNote方法永遠不會從jquery調用,這就是它現在的位置。 – Matt

回答

2

它在我看來像你的@Url.Action是錯的。你有沒有試過@Url.Action("SaveNote", "Note")

只是爲了使這個完整的答案,問題是單詞「控制器」不應該出現在Url.Action調用。每個以下的將工作:

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

...或

@Url.Action("Note/SaveNote")

+0

更改爲注意(而不是NoteController)修復它。現在工作正常。謝謝!我真的對此感到沮喪。不知何故,我知道我只是在做一些愚蠢的事情,這將是一個簡單的修復。 – Matt

+0

正確。 「Controller」後綴是ASP.NET MVC中的一種慣例。你只能通過「註釋」部分引用控制器。 –

1

可以使URL作爲 「控件名稱/方法名」

+0

我不知道。即使如此,它應該是「NoteController/SaveNote」嗎?或者只是「Note/SaveNote」?我懷疑控制器名爲NoteControllerController。 – danludwig

+0

如果你的控制器名稱是「LoadController」,你只需要加載,我使用這種技術與asp.net url:「pagename.aspx/methodname」,但通過我的方法頁面屬性[webmethod] – Tarek

相關問題