0

ボタンに asp: Repeaterを使用しただけで、より効率的になりました。

foreach サイクルで複数のテーブルを作成しています。各テーブルには、個別のページにつながるボタンが含まれています。ボタンのみの html コードを次に示します。

<form name='input' action='AuctionDetails.aspx' method='get'>
<input type='submit' value='Bid now' name='{5}'/>
</form>

現在、多くの反復 (約 50) があり、最初のボタンを除いてすべてのボタンが機能します。結果をフィルタリングしても(返されるテーブルが少なくなります)、最初のボタンを除くすべてのボタンが機能します。

これが完全な方法です。

private void FillPageAuctions()
{
    IEnumerable<AuctionClass> query = null;
    var context = new AuctionsEntities();

    string queryString = Request.QueryString.ToString();

    if (Request.QueryString.ToString() != "")
    {
        query = from e in context.Auctions
                where e.Category.Name == queryString
                select e;
    }

    else
    {
        query = from e in context.Auctions select e;
    }

    StringBuilder sb = new StringBuilder();

    if (query.Count() == 0)
    {
        sb.Append("There are no auctions in this category.");
    }

    else
    {
        foreach (AuctionClass auction in query)
        {
            string temp = auction.AuctionName;
            if (auction.AuctionName.Length > 12)
            {
                temp = auction.AuctionName.Remove(12);
                temp = temp + "...";
            } 

            sb.Append(String.Format(@"<table style='border: 1px solid #666666;
                float:left;
                width: 24%;
                margin: 0px 3px 3px 3px;
                text-align: center;'>
                <tr><th style='font-size: 18px'>{0}</th></tr>
                <tr><td><img src='{1}' height='100px' width='100%'/></td></tr>
                <tr><td>Price: ${2}</td></tr>
                <tr><td>Time Left: </td></tr>
                <tr><td>{3} hours</td></tr>
                <tr><td>{4} minutes</td></tr>
                <tr><td>
                <form name='input' action='AuctionDetails.aspx' method='get'>
                    <input type='submit' value='Bid now' name='{5}'/>
                </form>
                </td></tr></table>", temp, "Untitled.png", 
                auction.CurrPrice, 0, 0, auction.AuctionID));
        }
    }
    AuctionListLabel.Text = sb.ToString();
}
4

2 に答える 2

0

送信ボタンの名前を値の数に変更すると、name='/0-50/' という単純なループを作成して、カウンター変数を使用して送信される値を返すことができます。

于 2013-07-30T14:07:31.987 に答える
0

ASP.NET ページでは、複数の Form タグを配置することはできません。

単一フォーム モデルは、ASP.NET の状態維持機能を実装するための重要な要素です。ページは常にそれ自体に投稿されるため、ランタイムは、最後のアクセス時に保存された状態を簡単に取得および復元できます。ページの状態を保存および復元する方法は他にもありますが、単一フォーム モデルを使用することは、すべてのソリューションの中で最も簡単で効果的です。

于 2013-07-30T14:08:02.263 に答える