Question

Je dois instancier des ASP linkbuttons sur une page vue ASP.NET MVC. J'ai essayé quelques petites choses, et je ne peux pas les amener à sortir à droite. Heres mon incarnation la plus récente du code: le fichier ASPX

<body>
<% using (Html.BeginForm("TitleDetail", "Movies", FormMethod.Post, new{runat="server"})) { %> 

    <ul>
    <% foreach (var disc in Model.Title.tblDiscs) %>
    <% { %>

        <li>
            <asp:LinkButton ID="Play">Link</asp:LinkButton>
        </li>
    <% } %>
    </ul>
<% } %> 
</body>

Ce qu'il rend dans Firefox est une instance du lien texte pour chaque membre de la collection Je suis ENUMERE mais ils ne coûtent pas des liens hypertexte, juste le texte. Le code HTML généré ressemble à ceci

<form action="/MyMovies/TitleDetail/239" method="post" runat="server">test title <br />

   <ul>
        <li>

            <asp:LinkButton ID="Play">Link</asp:LinkButton>
        </li>

        <li>
            <asp:LinkButton ID="Play">Link</asp:LinkButton>
        </li>

        <li>
            <asp:LinkButton ID="Play">Link</asp:LinkButton>

        </li>

    </ul>

Je l'ai essayé d'ajouter un runat = « server » attribuite à chaque asp: tag LinkButton, mais je reçois une exception d'exécution que les contrôles ne peuvent être mis dans une balise de forme avec l'attribut runat = « server ». Ce que je pense que je l'ai déjà fait, donc je ne comprends pas vraiment. Quelqu'un peut-il me expliquer ce que je fais mal, et ce que je dois faire pour y remédier afin que les linkbuttons sont linky en fait?

Était-ce utile?

La solution

Avec ASP.NET MVC vous devez utiliser des méthodes d'aide de Html.ActionLink(...) (et autres). Ils offrent des fonctionnalités beaucoup plus riche que linkbuttons.

Autres conseils

Je suppose que vous voulez utiliser LinkButton pour soumettre le formulaire de l'utiliser? Si tel est le cas, je l'ai fait quelque chose de semblable et il est quelque chose comme ceci:

<% using (Html.BeginForm("TitleDetail", "Movies", 
    FormMethod.Post, new{ id = "MyForm", name = "MyForm" })) { %>     
<ul>
    <% foreach (var disc in Model.Title.tblDiscs) { %>
        <li>
            <a class="do-something-link" href="javascript:void(0);">Click</a> 
        </li>
    <% } %>
</ul>
<% } %>

gérer ensuite le soumettre via jQuery:

$(document).ready(function(){
    $("a.do-something-link").click(function(ev) {
        ev.preventDefault();
        $("#MyForm").submit();
    });
}); 

Malheureusement, ASP.NET MVC ne prend pas en charge les formulaires Web Contrôles en ce moment. Pardon! : (

Vous devez utiliser un lien HTML standard.

J'ai écrit une méthode d'extension un peu brut. Ne hésitez pas à améliorer ce (il est tout ce que je avais besoin):

public static IHtmlString ActionButton(this UrlHelper urlHelper, string buttonText,
    string actionName)
{
    var html = string.Format("<input type=\"button\" value=\"{0}\" " +
        "onclick=\"window.location = '{1}'\"/>",
        buttonText, urlHelper.Action(actionName));

    return new HtmlString(html);
}

Et dans la vue, appelez comme ceci:

@Url.ActionButton("Button Text", "ActionMethod")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top