10

ASP.NET MVC ビュー ページにいくつかの ASP LinkBut​​ton をインスタンス化する必要があります。いくつか試してみましたが、うまくいきません。これが私の最新のコードの化身です: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>

Firefox でレンダリングされるのは、列挙しているコレクション内の各メンバーのテキスト リンクの 1 つのインスタンスですが、それらはハイパーリンクではなく、単なるテキストです。生成された 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="server" 属性を各 asp:LinkBut​​ton タグに追加しようとしましたが、runat="server" 属性を持つフォーム タグ内にのみコントロールを配置できるというランタイム例外が発生します。すでにやっていると思うので、よくわかりません。LinkBut​​tonsが実際にリンクできるように、私が間違っていることと、それを修正するために何をする必要があるかを誰かに説明できますか?

4

4 に答える 4

14

私の推測では、LinkBut​​ton を使用してフォームを送信したいと思いますか? その場合、私は似たようなことをしましたが、それは次のようなものです:

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

次に、jQuery 経由で送信を処理します。

$(document).ready(function(){
    $("a.do-something-link").click(function(ev) {
        ev.preventDefault();
        $("#MyForm").submit();
    });
}); 
于 2009-05-19T19:45:23.237 に答える
7

ASP.NET MVC ではHtml.ActionLink(...)、ヘルパー メソッド (など) を使用する必要があります。これらは、LinkBut​​ton よりもはるかに豊富な機能を提供します。

于 2009-05-18T22:23:23.543 に答える
2

残念ながら、ASP.NET MVC は現在 Web フォーム コントロールをサポートしていません。ごめん!:(

標準の HTML リンクを使用する必要があります。

于 2009-05-18T22:20:30.680 に答える
2

やや大雑把な拡張メソッドを書きました。これを自由に改善してください(必要なのはそれだけです):

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")
于 2013-06-14T18:42:45.063 に答える