Ich bin ziemlich neu zu all dem. Ich benutze ASP.NET MVC C# LINQ to SQL.MVC jQuery Formular senden (ohne Seitenaktualisierung) von JavaScript-Funktion
Ich habe eine Bearbeitungsseite, die Autoren und alle ihre Bücher lädt. Die Bücher werden über einen Anruf Ajax geladen.
<script type="text/javascript">
$(document).ready(function() {
LoadBooks();
});
function LoadBooks() {
$(".Books").hide();
$(".Books").load("/Books/Edit/<%= Model.AuthorID %>");
$(".Books").show('slow');
}
</script>
Dieser Teil funktioniert gut. Die Seite lädt mit dem Autor Info, dann die Bücher Last (eine Teilansicht in einem DIV id = „Bücher“, nur mit dem Buch Kategorie und Buchtitel):
<%@ 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>
<% } %>
nun auf der Hauptansicht Seite I möchte einen Link haben. Wenn der Link angeklickt wird, möchte ich ein paar Dinge über JavaScript/jQuery/Ajax/was auch immer tun. Als erstes möchte ich das Books-Formular (id = booksform) aus der Teilansicht einreichen und dann mit der nächsten jQuery-Funktion fortfahren. Also klicke ich auf einen Link, der eine JavaScript-Funktion aufruft. Diese Funktion sollte die Einreichung des Books-Formulars aufrufen/ausführen.
Ich habe das Gefühl, dass ich alles versucht habe, aber ich kann mein Books-Formular nicht einreichen und verarbeiten, ohne dass eine vollständige Seite einreichen/aktualisieren stattfindet. (Beachten Sie, dass die Aktionen, die ich im Controller erwarten würde, erfolgreich ausgeführt werden, wenn die vollständige Übertragung stattfindet). Ich möchte, dass der Controller-Prozess/Aktion nichts anderes zurückgibt als irgendeine Art von Erfolgs-/Fehleranzeige. (Ich kann anrufen „LoadBooks();“ dann.? Erneut die DIV auf der Seite zu aktualisieren
Irgendwelche Ideen
Was ist, wenn sie auf einen Link (keine Schaltfläche) außerhalb des Formulars klicken? Wie weise ich das Formular dann der Variablen (var $ form) zu? Vielen Dank. – johnnycakes
Probieren Sie einfach Ihren Vorschlag aus und weisen Sie der Variable den Wert from zu. Var $ form = document.getElementById ('bookform'); Nichts passiert, wenn auf den Link geklickt wird. – johnnycakes
Ich aktualisierte meine Antwort. getElementById gibt javascript object not jquery object zurück, stattdessen $ ("# bookform"). –