Frage

Ich brauche einige ASP Linkbuttons auf einer ASP.NET MVC-Ansicht-Seite zu instanziiert. Ich habe ein paar Dinge ausprobiert, und ich kann nicht bekommen sie Recht zu kommen. Heres meine jüngste Inkarnation des Codes: die aspx-Datei

<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>

Was es macht in Firefox ist eine Instanz des Textlink für jedes Mitglied in der Sammlung Ich bin aufzählt, aber sie Arent Hyperlinks, nur Text. Der erzeugte HTML sieht wie folgt aus

<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>

Ich habe versucht, zu jedem asp eines runat = „server“ attribuite füge hinzu: Linkbutton-Tag, aber ich eine Laufzeitausnahme erhalten, die nur in einem Formular-Tag mit dem runat = „server“ -Attribut gesetzt werden Steuerelemente können. Was ich glaube, ich habe bereits getan, so dass ich nicht wirklich verstehen. Kann jemand mir erklären, was mache ich falsch, und was ich es tun müssen, um zu beheben, so dass die Linkbuttons sind tatsächlich linky?

War es hilfreich?

Lösung

Mit ASP.NET MVC sollten Sie Html.ActionLink(...) Hilfsmethoden (und dergleichen) verwendet werden. Sie bieten viel mehr Funktionen als Linkbuttons.

Andere Tipps

Meine Vermutung ist, dass Sie Linkbutton verwenden, um die Form, die sie mit einreichen? Wenn das der Fall ist, habe ich etwas Ähnliches getan, und es ist so etwas wie folgt aus:

<% 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>
<% } %>

behandeln dann die einreichen über jQuery:

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

Leider ist ASP.NET MVC nicht Web-Formulare unterstützt jetzt Kontrollen. Es tut uns leid! : (

Sie erhalten einen Standard-HTML-Link verwenden.

Ich schrieb eine etwas grobe Erweiterungsmethode. Fühlen Sie sich frei, dies zu verbessern (es ist alles, was ich brauchte):

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);
}

Und in der Ansicht, nennen Sie es wie folgt aus:

@Url.ActionButton("Button Text", "ActionMethod")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top