Ie.私は次のように、自分のページ上のコードの一部を持っているのPage_LoadでASP.NETセッションショッピングカートアイテム更新でアイテムの問題が発生しない
Dim subTotal As Integer = 0
For Each item As CartItem In ShoppingCart.Instance.Items
subTotal += 1
Next
strShoppingCart.Append(subTotal).Append(" Items")
shoppingCartItems.Text = strShoppingCart.ToString()
であるとサブUpdate_Click(オブジェクトとしてByVal送信者、ByValをeとして保護さ
を次のように私はその後、私のカートにアイテムを追加することができますEventArgs)を整数= productListTable.Rows.Count
For Each row As GridViewRow In productListTable.Rows
If row.RowType = DataControlRowType.DataRow Then
' We'll use a try catch block in case something other than a number is typed in. If so, we'll just ignore it.
Try
' Get the productId from the GridView's datakeys
Dim productId = Convert.ToInt32(productListTable.DataKeys(row.RowIndex).Value)
' Find the quantity TextBox and retrieve the value
Dim quantity = Integer.Parse(CType(row.Cells(1).FindControl("txtQuantity"), TextBox).Text)
'Dim price = Decimal.Parse(CType(row.Cells(1).FindControl("TradePriceField"), Label).Text)
Dim price = Decimal.Parse("16.00")
Dim productName = CType(row.Cells(1).FindControl("ProductNameField"), Label).Text
Dim packSize = Integer.Parse(CType(row.Cells(1).FindControl("PackSizeField"), Label).Text)
Dim stockIndicator = Integer.Parse(CType(row.Cells(1).FindControl("PackSizeField"), Label).Text)
ShoppingCart.Instance.AddItem(productId, quantity, price, productName, packSize, stockIndicator)
Catch ex As FormatException
End Try
End If
Next
End Sub
として薄暗いrowscount
ページ読み込みを次のように問題がありますのアイテムは、セッション で1つの項目は私が正しいセッションカウントから読み取ることができますどのように1
にカウンターが行くページを更新し、実際にあった場合に0
私はページがまだ0アイテムを言う製品を追加しているカウント?
ご質問すべてのクリックに対して、レスポンスが非常に重いリソースか、間違っているようですか?また、update_clickの後にShoppingCartItemsを更新するには、どうすればいいのでしょうか?つまり、ShoppingCart.Instance.AddItem(productId、quantity、price、productName、packSize、stockIndicator) – StevieB
Page_rereenderのセッション数を表示するコードを配置しています。トリックをした – StevieB
@StevieB:私はリダイレクトのアプローチがリソース重いとは思わない。再ポストダイアログは混乱しているので(ページの更新やバックボタン、フォワードボタンのクリックなどのいくつかの状況で表示できます)、ユーザーエクスペリエンスを向上させる必要があると私は考えています。 ASP.NETの標準的なアプローチは、Page_Loadにデータをバインドし、ポストバック(if(!Page.IsPostBack)DataBindMyControls();)の場合に考慮します。任意のポストバックイベント(ボタンクリックなど)は、更新が必要なものを更新し、Response.Redirectだけでページをリロードすることができます。 – rsbarro