2016-01-18 13 views
10

Questa tabella popola correttamente con @device.DeviceId ma non passa all'azione del controller.asp-route-id non passa il valore del parametro

<table border="1" cellpadding="10"> 
    @foreach (var device in @Model.Devices) 
    { 
     <tr> 
      <td>@device.DeviceId</td> 
      <td>@device.DeviceName</td> 
      <td> 
       <a asp-action="DeleteDevice" 
        asp-controller="Device" 
        asp-route-id="@device.DeviceId" asp-> 
        Delete 
       </a> 
      </td> 
     </tr> 
    } 
</table> 

La firma azione del controller è

public async Task<IActionResult> DeleteDevice(int deviceId) 

L'azione è chiamata ma deviceId = 0.

Come faccio a garantire @device.DeviceId sia correttamente passata all'azione?

risposta

13

O modificare l'azione del controller a:

public async Task<IActionResult> DeleteDevice(int id) 

o, cambiare il tag a in modo che l'attributo asp-route-* corrisponde al nome del parametro, in questo modo:

<a asp-action="DeleteDevice" 
    asp-controller="Device" 
    asp-route-deviceId="@device.DeviceId"> 
    Delete 
</a> 
+1

Grazie @Jamie Dunstan – Vague

Problemi correlati