asp.net变量传递
问题描述:
当我试图在用户提交后将我的页面加载值放入数据库时,我遇到了一个奇怪的错误。asp.net变量传递
页面加载时,我有这样的:
Public theProductName As String = ""
Dim theProductCategory As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadProductName()
End If
End Sub
Private Sub LoadProductName()
objConn = New MySqlConnection(product.strConnString)
objConn.Open()
strSQL = "SELECT id, name, category " & _
"FROM product " & _
"WHERE id = 4;"
Try
objCmd = New MySqlCommand(strSQL, objConn)
dtReader = objCmd.ExecuteReader()
While dtReader.Read()
theProductName = dtReader("name")
theProductCategory = dtReader("category")
btnSubmit.Text = "Add Item to " & theProductName
End While
dtReader.Close()
dtReader = Nothing
objConn.Close()
objConn = Nothing
Catch ex As Exception
MsgBox("LoadProductName: " & ex.Message)
End Try
End Sub
当我检查页面的启动那些价值,他们有正确的价值观,甚至提交按钮有产品名称。
但是,一旦我按下按钮后保存它,它具有相同的变量没有?
Private Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
Dim productName As String = theProductName.Replace(" ", "-")
Dim imageName As String = productName & "\" & Trim(txtModel.Text) & ".jpg'"
Dim theCat as String = theProductCategory
End Sub
产品名称,无非是为theCat
我该怎么办可以俯瞰?
答
您必须ViewState
,以保存数据。由于您发布的数据,使你失去了你的老态
public string ProductName
{
get
{
if(Viewstate["ProductName"] == null)
{
return string.Empty;
}
return (string)Viewstate["ProductName"];
}
set
{
Viewstate["ProductName"] = value;
}
}
设定值
ProductName = "your value";
答
这是因为您只有在不回发,第一次加载时才读取theProductName
,然后不会保存在任何地方。
您可以将变量theProductName
置于视图状态,以便在回发后拥有相同的值。
实例和从MSDN更多评论:http://msdn.microsoft.com/en-us/library/ms227551(v=vs.85).aspx
'theProductName'是什么?它看起来像一个字符串 - 在哪里声明/设置? – n8wrl 2012-08-09 15:28:44
@ n8wrl:我用这些信息更新了我的OP。我有** Public **为** theProductName **,因为我在我的HTML页面中使用**()** – StealthRT 2012-08-09 15:35:17