Création de votre propre table avec les boutons CommandArgument dans ASP.NET MVC

StackOverflow https://stackoverflow.com/questions/16964

  •  08-06-2019
  •  | 
  •  

Question

J'essaie d'implémenter quelque chose comme ceci :

<div>
    <table>
        <thead>
            <tr>
                <td>Port name</td>
                <td>Current port version</td>
                <td>New port version</td>
                <td>Update</td>
            </tr>
        </thead>
        <% foreach (var ip in Ports) { %>
            <tr>
                <td>
                    <%= ip.PortName %>
                </td>
                <td>
                    <%= ip.CurrentVersion %>
                </td>
                <td>
                    <%= ip.NewVersion %>
                </td>
                <td>
                    <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandArgument="<% ip.PortName %>" />
                </td>
            </tr>
            <% } %>
    </table>
</div>

Le bouton CommandArgument la propriété est l'endroit où mon code se plaint de ne pas pouvoir résoudre le symbole ip.Existe-t-il un moyen de faire ce que j'essaie de faire ?­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Était-ce utile?

La solution

Vous ne souhaitez pas utiliser de bouton Webforms dans ASP.NET MVC.MVC est une façon complètement différente de travailler et vous n'avez plus l'abstraction WebForms.

Vous disposez de 2 options différentes : vous pouvez soit remplacer votre asp:Button par une balise d'entrée, soit utiliser un lien hypertexte standard à la place.Si vous utilisez l'option d'entrée, vous devrez alors envelopper un élément de formulaire.L’action du formulaire doit pointer vers une action du contrôleur.

Autres conseils

Vous ne pouvez pas utiliser les contrôles de formulaire Web dans ASP.NET MVC de manière triviale, car ils reposent sur des éléments supprimés dans MVC.Au lieu de cela, vous ajoutez un bouton de deux manières, toutes deux en utilisant le HtmlHelper sur le ViewPage:

Vous pouvez ajouter un bouton dans un formulaire, qui est facilement géré dans un contrôleur si vous disposez d'un formulaire pour chaque bouton :

<% using(Html.BeginForm("Update", "Ip", new {portName = ip.PortName} )) { %>

    ....
    <input name="action" type="submit" value="Update">

<% } %>

BeginForm() utilisera par défaut le même contrôleur et la même action à partir desquels la vue a été créée.L'autre méthode consiste à ajouter un lien à la place, ce qui convient mieux à votre exemple d'itération dans une liste.Par exemple, disons que vous avez IpController

<%= Html.ActionLink("Update IP", "Update", "Ip", 
        new { 
            portName = ip.PortName 
        }) 
%>

Le lien mènera à l'action Mettre à jour dans IpController avec le portName donné comme paramètre.Dans les deux cas, vous aurez besoin de cette action dans IpController :

public ActionResult Update(string portName) {
    // ...
}

J'espère que cela t'aides.

Je pense que vous devez placer votre bloc dans les balises Form et runat=server.

FWIW,

Je pense qu'il manque un signe égal à ce texte :

CommandArgument="<% ip.PortName %>"

Devrait être

CommandArgument="<%= ip.PortName %>"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top