我對這一切都很陌生。我使用ASP.NET MVC C#LINQ to SQL。MVC jQuery提交表單(無頁面刷新)來自JavaScript函數
我有一個加載作者及其所有書籍的編輯頁面。 書籍通過Ajax調用加載。
<script type="text/javascript">
$(document).ready(function() {
LoadBooks();
});
function LoadBooks() {
$(".Books").hide();
$(".Books").load("/Books/Edit/<%= Model.AuthorID %>");
$(".Books").show('slow');
}
</script>
這部分工作正常。該頁面加載與作者信息,然後將書籍負載(一個DIV ID =「書籍」的局部圖,只需用書目錄和書名):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Solution.Controllers.BooksController+BooksViewModel>" %>
<% using (Html.BeginForm(null,null, FormMethod.Post,new { id = "bookform" }))
{%>
<fieldset>
<legend>Books</legend>
<%int i = 0;
foreach (var book in Model.Books)
{%>
<%= book.BookID%>
<%= Html.Hidden("book[" + i + "].BookID", book.BookID) %>
<%= Html.DropDownList("book[" + i + "].CatID", new SelectList(Model.Categories, "CatID", "CatTitle", book.CatID))%>
<%= Html.ValidationMessage("CatID", "*")%>
<%= Html.TextBox("book[" + i + "].BookTitle", book.BookTitle)%>
<%= Html.ValidationMessage("BookTitle", "*")%>
<br />
<%i++;
} %>
</fieldset>
<% } %>
現在,在主視圖頁面我想要有一個鏈接。 當鏈接被點擊時,我想通過JavaScript/jQuery/Ajax /任何東西做一些事情。 我想要發生的第一件事是從部分視圖中提交書籍表單(id = booksform),然後繼續執行下一個jQuery函數。所以,我點擊了一個調用JavaScript函數的鏈接。這個函數應該調用/執行/提交Books表單。
我覺得我已經嘗試了一切,但我無法讓我的書籍表單提交和處理,而沒有整頁提交/刷新發生。 (注意,當提交完成時,我期望在控制器中執行的操作可以成功處理)。我希望控制器進程/動作除了某種成功/失敗指示之外不返回任何內容。 (然後我就可以稱之爲「LoadBooks();」?再刷新頁面上的DIV
任何想法
如果他們點擊表單之外的鏈接(而不是按鈕)會怎麼樣?那麼如何將表單分配給變量(var $ form)呢?謝謝。 – johnnycakes 2009-11-12 14:43:52
剛剛嘗試過使用var $ form = document.getElementById('bookform');來分配變量的建議。鏈接被點擊時沒有任何反應。 – johnnycakes 2009-11-12 15:01:54
我更新了我的答案。 getElementById返回javascript對象而不是jquery對象,請改用$(「#bookform」)。 – 2009-11-12 15:19:29