2017-12-27 2 views
0

Ich versuche, mit actionlink 3 Werte von einer Ansicht an eine andere Aktion zu senden. Ich habe einen Tisch. Jede Zeile hat 3 Spalten mit ID, Name und Geld, was ein Textfeld ist. Das Problem ist, dass die Aktionsverknüpfung nur den Wert der Textbox der ersten Zeile übergibt. Angenommen, ich drücke den Aktionslink der zweiten Zeile, es passiert, den Namen und die ID der zweiten Zeile, aber das Geld, das in der Textbox ist. ist vorbei an der ersten Reihe.Der Wert des Textfelds in einer Tabellenzeile kann nicht korrekt von der Ansicht an den Controller in MVC5 übergeben werden

meiner Ansicht Code:

@model List<UdemyMVC.Models.Movies> 
@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Index</h2> 

<table class="table table-striped table-bordered table-hover"> 
    <thead> 
     <tr class="danger"> 
      <th> 
       Id 
      </th> 
      <th> 
       Name 
      </th> 
      <th> 
       Bid Money 
      </th> 
     </tr> 
    </thead> 
    <tbody> 
     @foreach (var movie in Model) 
     { 
      <tr> 
       <td> 
        @movie.Id 
       </td> 
       <td> 
        @movie.MovieName 
       </td> 
       <td> 
        <input type="text" id="bidMoney" name="bidMoney"/> 
       </td> 
       <td> 
        @Html.ActionLink("Details", "Details", "Test", new { Id =movie.Id, MovieName = movie.MovieName }, new { onclick = "this.href += '&biddingMoney=' + document.getElementById('bidMoney').value;", @class = "btn btn-primary" }) 
       </td> 
      </tr> 
     } 
    </tbody> 
</table> 
+0

Sie fügen die eindeutige ID nicht zu den tds hinzu, also haben alle tds den gleichen Namen und die gleiche Identifikation onclcik, sogar Sie müssen die Identifikation zusammen mit dem Namen weitergeben, den Charles Ihnen bereits die Lösung gegeben hat –

Antwort

1

Ich denke, man sollte einen Index auf die ID für bidMony hinzufügen und diesen Index als dem einen Referenz verwenden Sie wollen. Mein Rasierer ist total rostig jetzt

aber einen Index

@{ int i = 0} 
    @foreach (var movie in Model) 
    { 

     <tr> 
      <td> 
       @movie.Id 
      </td> 

      <td> 
       @movie.MovieName 

      </td> 
      <td> 
       <input type="text" id="[email protected](i)" name="bidMoney" /> 

      </td> 
      <td> 

      @Html.ActionLink("Details", "Details", "Test", new { Id =movie.Id, MovieName = movie.MovieName }, new { onclick = string.Format("alert(document.getElementById('bidMoney{0}').value);",i), @class = "btn btn-primary" }) 



      </td> 

     </tr> 
     i++; 
    } 

Ich bin nicht in der Lage zu erklären, dies zu testen, aber ich denke, das ist, was Sie tun müssen. Das Problem ist, dass Sie GetementByID sehen, ist eine Reihe von BidMoney-Elemente, aber kann nur eins zurückgeben, so gibt es Ihnen die erste.

Verwandte Themen