Sono abbastanza nuovo a tutto questo. Sto usando ASP.NET MVC C# LINQ to SQL.MVC jQuery invia modulo (senza aggiornamento pagina) dalla funzione JavaScript
Ho una pagina di modifica che carica gli autori e tutti i loro libri. I libri vengono caricati tramite una chiamata Ajax.
<script type="text/javascript">
$(document).ready(function() {
LoadBooks();
});
function LoadBooks() {
$(".Books").hide();
$(".Books").load("/Books/Edit/<%= Model.AuthorID %>");
$(".Books").show('slow');
}
</script>
Questa parte funziona correttamente. Il caricamento della pagina con informazioni Autore, quindi il carico di libri (una vista parziale in un id DIV = "Libri", solo con la categoria Libro e Titolo libro):
<%@ 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>
<% } %>
Ora, la visualizzazione della pagina principale che ho voglio avere un link. Quando si fa clic sul collegamento, voglio fare alcune cose tramite JavaScript/jQuery/Ajax/qualunque. La prima cosa che voglio succedere è di inviare il modulo Libri (id = booksform) dalla vista parziale, quindi passare alla successiva funzione jQuery. Quindi, faccio clic su un collegamento che chiama una funzione JavaScript. Questa funzione dovrebbe chiamare/fare/eseguire la presentazione del modulo Libri.
Mi sento come se avessi provato tutto, ma non riesco a ottenere il mio modulo Libri per inviare ed elaborare senza un invio/aggiornamento di una pagina completa in corso. (Nota, quando si esegue l'invio completo, le azioni che mi aspetto nel controller procedono correttamente). Voglio che il processo/azione del controller non restituisca altro che una qualche indicazione di successo/fallimento. (Posso quindi chiamare "LoadBooks();".? Di nuovo per aggiornare la DIV nella pagina
Tutte le idee
Cosa succede se fanno clic su un collegamento (non su un pulsante) al di fuori del modulo? Come posso assegnare il modulo alla variabile (var $ form) allora? Grazie. – johnnycakes
Ho appena provato il tuo suggerimento assegnando il da alla variabile usando var $ form = document.getElementById ('bookform'); Non succede nulla quando si fa clic sul collegamento. – johnnycakes
Ho aggiornato la mia risposta. getElementById restituisce l'oggetto javascript non l'oggetto jquery, usa invece $ ("# bookform"). –