سؤال

وأحتاج إلى مثيل بعض LinkButtons ASP على صفحة الرأي ASP.NET MVC. لقد حاول عدد قليل من الأشياء، وأنا غير قادر على الحصول عليها للخروج الحق. هيريس بلدي التجسد الأخير للكود: ملف 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>

وماذا يجعل في فايرفوكس هو مثيل واحد من ارتباط النص لكل عضو في المجموعة أنا تعداد، ولكن أنها تخلخل ارتباطات تشعبية، مجرد نص. وHTML ولدت تبدو مثل هذا

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

ولقد حاولت إضافة RUNAT = "الخادم" attribuite إلى كل آسيا والمحيط الهادئ: العلامة LinkButton، ولكن أحصل على استثناء وقت التشغيل الذي يتحكم يمكن وضعها فقط داخل علامة النموذج مع RUNAT = السمة "الخادم". وأنا أعتقد أنني قد فعلت، لذلك أنا لا أفهم حقا ذلك. هل يستطيع أحد أن يفسر لي ما أفعله خطأ، وأنا ما عليك القيام به لاصلاحها بحيث LinkButtons وlinky فعلا؟

هل كانت مفيدة؟

المحلول

ومع ASP.NET MVC يجب عليك استخدام أساليب Html.ActionLink(...) المساعد (وما شابه ذلك). أنها توفر وظائف أكثر ثراء بكثير من LinkButtons.

نصائح أخرى

وتخميني هو أن كنت تريد استخدام LinkButton تقديم النموذج باستخدام ذلك؟ إذا كان هذا هو الحال، لقد فعلت شيئا من هذا القبيل وهذا شيء من هذا القبيل:

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

وبعد ذلك التعامل مع تقدم عبر مسج:

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

ومما يؤسف له، ASP.NET MVC لا يدعم نماذج الويب يتحكم في الوقت الحالي. آسف! : (

وسيكون لديك لاستخدام رابط HTML القياسية.

وكتبت طريقة تمديد الخام إلى حد ما. لا تتردد في تحسين هذا (هو كل ما لزم الأمر):

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

وفي طريقة العرض، الذي يطلق عليه مثل هذا:

@Url.ActionButton("Button Text", "ActionMethod")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top