javascript tag wie man einen Rasiermesser-Wert an eine jQuery-Funktion in einer MVC-Ansicht übergibt




title tag (5)

Wenn Sie JQuery .data()

<input type="button" value="Assign" onclick="AssignButtonClicked(this)" 
       data-assigned-id="@item.ID" />

Weiter kann es mit abgerufen werden

function AssignButtonClicked(elem){
     var id= $(elem).data('assigned-id');
}

Also versuche ich, einen Parameter an eine Javascript-Funktion zu übergeben, indem ich die Rasierklinge @ -Notation benutze (in einer MVC-4-Ansicht), aber ich bekomme Syntaxfehler: "Unbeendigte String-Konstante"

Gibt es eine andere Art, wie ich das schreiben sollte?

@foreach (var item in Model)
{
 ...
    <input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />
}

Ich habe die gleiche Syntax wie diese Antwort https://stackoverflow.com/a/5179316/1662619

Bearbeiten:

Es ist nur ein Syntaxfehler, die Funktionalität funktioniert immer noch


Versuche dies,

 <input type="button" value="Assign" onclick="AssignButtonClicked(@item.ID);" />

Skript

<script type="text/javascript">

 function AssignButtonClicked(obj) {
        alert(obj);
        return false;
    }
</script>

Als Alternative können Sie den anderen Weg verwenden, um @item.ID in Ihrer jQuery-Funktion zu erhalten. Fügen Sie einfach hiden span hinzu und erhalten Sie den Wert in Ihrer Funktion.

Sag, du hast eine Liste:

<ul>
@foreach (var item in Model)
{
 ...
   <li> <input type="button" value="Assign" onclick="AssignButtonClicked()" />
        <span class="hidenID">@item.ID</span>
</li>
}
</ul>

als in deinem Skript hinzufügen:

<script>
$(document).ready(function(){
$('.hidenID').hide() //**hide your span
});

function AssignButtonClicked()
{
...
var id = $(this).closest('li').find('.hidenID').text();
...
}

</script>

Aber meiner Meinung nach ist der beste Ansatz für jQuery wie folgt:

    <ul>
        @foreach (var item in Model)
        {
         ...
           <li> <input type="button" value="Assign" class="button" />
                <span class="hidenID">@item.ID</span>
        </li>
        }
        </ul>
    <script>
        $(document).ready(function(){
        $('.hidenID').hide() //**hide your span
        });

        $(function(){
         $('.button').click(function(){
        ...
         var id = $(this).closest('li').find('.hidenID').text();
        ...
        }
    });

});

    </script>

Um diese Art von Problem zu vermeiden, können Sie alle Ihre js Funktionsaufruf in c # -Code Abschnitt erstellen.

Anstatt von:

<input type="button" value="Assign" onclick="AssignButtonClicked('@item.ID')" />

Benutzen:

@{
  var assignFunctionCall = "AssignButtonClicked(" + item.ID + ")";
}
<input type="button" value="Assign" onclick="@assignFunctionCall " />

Versuche dies

 <input type="button" value="Assign"
   onclick="@("AssignButtonClicked('"+item.ID+"')")"  />






parameter-passing