0

私はこのようなものを実装しようとしています:

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

ボタンのCommandArgumentプロパティは、私のコードがシンボルを解決できないと不平を言う場所ipです。私がやろうとしていることをする方法はありますか?

4

4 に答える 4

3

ASP.NET MVC で Webforms ボタンを使用したくない。MVC はまったく異なる作業方法であり、WebForms の抽象化はもうありません。

asp:Button を入力タグに置き換えるか、代わりに標準のハイパーリンクを使用することができる 2 つの異なるオプションがあります。入力オプションを使用する場合は、フォーム要素でラップする必要があります。フォーム アクションはコントローラー アクションを指す必要があります。

于 2008-08-19T21:43:38.137 に答える
1

Web フォーム コントロールは、MVC で取り除かれたものに依存しているため、ASP.NET MVC で単純な方法で使用することはできません。代わりに、次の 2 つの方法でボタンを追加します。どちらも の を使用しHtmlHelperますViewPage

フォームにボタンを追加できます。ボタンごとにフォームがある場合、コントローラーで簡単に処理できます。

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

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

<% } %>

BeginForm() は、ビューの作成元と同じコントローラーとアクションにデフォルト設定されます。もう1つの方法は、代わりにリンクを追加することです。これは、リストを反復処理する例により適しています。たとえば、IpControllerがあるとしましょう

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

リンクは、指定された portName をパラメータとして IpController の Update アクションに移動します。どちらの場合も、IpController で次のアクションが必要になります。

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

お役に立てれば。

于 2009-02-27T12:23:58.010 に答える
0

FWIW、

このテキストには等号がないと思います:

CommandArgument="<% ip.PortName %>"

する必要があります

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

于 2009-05-29T19:19:39.417 に答える
0

ブロックを Form タグ ans runat=server で囲む必要があると思います。

于 2009-02-27T11:54:06.820 に答える