Wie zum ausführen von JavaScript-Funktion auf PartialView laden in MVC 3
\\code
public ActionResult mapPartial(DataTable dt)
{
string strEvents = "[";
foreach (DataRow row in dt.Rows)
{
strEvents += "[" + row["Lat"].ToString() + ", " + row["Long"].ToString() + ", " + "\"" +
row["LastName"].ToString() + row["DateOfBirth"].ToString() + "\"" + "],";
}
strEvents = strEvents.Remove(strEvents.LastIndexOf(","));
strEvents += "]";
ViewBag.locpoints = strEvents;
return PartialView(dt);
}
//in the partial view page
<script type="text/javascript">
function mapInit(Viewbag.locpoints) {
var arr = $.parseJSON(Viewbag.locpoints);
//more code which assigns a map to div map below
}
</script>
<div id="map" class="map"></div>
Wie kann ich den Aufruf der JS-Funktion sofort, um meinen anzeigen, wenn das partial view geladen wird. Die partial-Methode in der controller liefert eine Zeichenkette, die als parameter in der JS-Funktion. Hoffe, es macht Sinn.
InformationsquelleAutor user2906420 | 2013-12-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie zu sein scheinen, mit Hilfe von JQuery warum nicht:
Habe ich auch geändert, wie Sie verwiesen Ihre
ViewBag
Wert, da die Art und Weise Sie es haben, es wird nicht ein string-literal in JavaScript.Auch, als eine Randnotiz, erwägen Sie die Verwendung der JSON-serializer zu konvertieren Sie Ihre Daten in JSON. Es ist als eine schlechte Praxis, es manuell zu tun, wie Sie es oben.
$(document).ready()
Methode vielleicht bereits ausgeführt, durch die Zeit, die teilweise erbracht wurde.Das ist ein guter Punkt. Dies macht nur Sinn, wenn es verbraucht ist, durch eine normale Ansicht und nicht über AJAX. Da nimmt er einen
DataTable
ich weiß nicht, wie es wäre laden per AJAX.Kann ich auch erstellen der JSON-code in Teilansicht im razor, aber dann nach Erhalt der JSON-string, wie zum Aufruf der JS-Funktion
InformationsquelleAutor marteljn
Nachdem Sie es definieren, die Sie gerade nennen Sie es. Aber es sieht aus wie Sie sind, einschließlich der MVC Viewbag Werte in der JS-Funktion definition. Sie sollten übergeben werden, die diese Werte beim Aufruf der JS-Methode:
Hinweis: Dies setzt Voraus, Sie haben jQuery geladen.
Die
mapInit(@(Viewbag.locpoints));
ist ein Aufruf Ihrer Methode. So nachdem dieser code in den browser geladen ist, führt er es.versucht es, funktioniert nicht - wird nichts angezeigt, wenn partial view geladen wird.
Für was habe ich schon in einem anderen Beitrag gelesen (und selber erfahren), können Sie Abschnitte in teilweise Ansichten. Sie einfach nicht funktionieren
InformationsquelleAutor Andrés Nava - .NET
Versuchen, rufen Sie Ihren controller via JQuery.
InformationsquelleAutor Carlos Coelho
Erwägen Sie die Verwendung der onSuccess Ajax-Option und Draht, eine javascript-Funktion, wo Sie Ihre jquery geschrieben. Zum Beispiel haben Sie folgende Skript geschrieben in deinem mainView, ruft die Teilansicht. Angenommen, Sie möchten etwas tun, wenn die Anker-tag in Ihrer partiellen view geklickt wird
Nun in Ihrem Teilansicht der Anker-tag erstellt, wie unten dargestellt
InformationsquelleAutor Shalin
Haben wir nun eine viel einfachere Lösung.
_Layout.cshtml nach
@RenderSection("scripts", required: false)
(und Jquery,etc.)Dann in Ihrer Teilansicht:
Dadurch wird Folgendes gewährleistet:
InformationsquelleAutor Informitics
Nur für den Fall, jemand stößt auf diese wieder (und da gibt es keine deutliche Antwort)...kann Man nicht definieren, die Javascript in einer teilweisen Ansicht, wie bereits in diese Seite von Darin.
@Section
in einer Teilansicht, was Darin war die Rede. Für die ursprüngliche Frage, er sollte ein$().ready(function(){
in seinem script-tag, um tatsächlich rufen Sie die JS auf Teillast. Darüber hinaus, wenn Sie laden Sie Ihre JS-tags unten in Ihre HTML-Seite, darunter dann das JS in eine teilweise Ansicht wird scheitern, wie es gerendert wird, bevor Sie Ihre JS-tags (in den meisten Fällen).InformationsquelleAutor Andrew Peterson
Der einzige Weg, können Sie dies tun, indem Sie Ihre controller-action mit JQuery und haben es wieder deine eingeschränkte Sicht. Jquery, update, was auch immer Abschnitt der Seite, die dem partial view geht, und dann rufen Sie die javascript-Methode, die Sie Rendern möchten, die Karte
InformationsquelleAutor Gjohn