2016-10-02 1 views
1

Ich habe ein Array-Modell in MVC an HTML-Seite übergeben Ich habe auch einige divs von ".myClass", wenn einer von ihnen angeklickt wird ich Funktion aufrufen und ihre ID (jeder hat andere Integer-ID) und dann will ich Um diese ID als Index eines Arrays zu verwenden, wie kann ich das tun? weil dieser Code nicht funktioniert.kann ich js Variable als Index von MVC-Array verwenden?

$(document).on('click', '.myClass', function (event) { 
    var id = parseInt($(this).attr('id')); 
    $("#Paragraph").html("@Model[id].name"); 
}); 
+0

müssen Sie Ihre Server-Seite Array auf eine Javascript-Variable als Json, um dies zu tun – charlietfl

+1

Dies ist nicht möglich, weil der JavaScript-Code im Browser ausgeführt wird und der C# -Code auf dem Server ausgeführt wird, beide zu unterschiedlichen Zeiten. Sie müssen die Seite nach dem Klick mit einem Attribut aktualisieren, das über die neue ID verfügt, und dann die Anforderungsparameter in der MVC-Ansicht verwenden. –

+0

@ TomášHübelbauer das ist eine sehr alte Schule Denkweise – charlietfl

Antwort

0

Sie können keine Server-Code in js so wie der C# -Code auf dem Server wird ausgeführt mischen, wenn Rasierer zum Rendern der Seite versucht. Ihr Klickereignis passiert auf der Client-Seite, nachdem der Razor das generierte Markup gesendet hat.

Für Ihren speziellen Anwendungsfall müssen Sie zunächst Ihr Modell lesen und ein lokales Javascript-Array einrichten. Dann können Sie ein Element aus diesem Array lesen.

Angenommen, Ihr Modell gehört zu einem Sammlungstyp.

$(function(){ 

    //Store the Model to a local js variable. 
    var myArr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)); 

    $(document).on('click', '.myClass', function (event) { 
    var id = parseInt($(this).attr('id')); 
    $("#Paragraph").html(myArr[id].name); 
    }); 

}); 

Eine weitere Option ist ein Ajax-Aufruf zu Ihrem Server, auf dem die Aktion Methode, um die eindeutige ID akzeptiert zu machen, mit denen sie die Einheit neu erstellt und schicken Sie es zurück an den Client und Client verwenden.

Verwandte Themen