2010-07-17 114 views
1

所以我三年左右都沒有使用ASP.NET,而且我真的生鏽了。我的舊代碼不適用於我的審查(在一家老公司)。這個問題應該是非常基本的,但我在這個問題上找不到任何好的或可靠的或不是非常古老的資源,所以我在這裏問。ASP.NET數據綁定/從代碼隱藏中獲取變量

我可以再次獲得數據綁定的概述嗎?我記得它對選擇框等非常有用,但我不記得它是如何工作的。一般來說,也許是一個很好的ASP.NET教程,因爲我不記得它是如何處理POST請求或類似的東西。我應該試試ASP.NET MVC嗎?

相關地,假設我在我的代碼隱藏頁面中有一個公共變量。現在我通過在頁面加載函數末尾說Page.DataBind(),然後在ASPX中運行<%# variable %>來訪問它,但這並不是我記得之前做過的,我認爲這不是很好的做法。從代碼隱藏中顯示變量的最佳方式是什麼?

+0

約定是你接受答案「哪個答案對你最有幫助」 - 正確的來自FAQ。信譽體系是獲得高質量答案的主要動力。如果你沒有參與社區公約,你不會幫助建立社區併產生更好的答案。至於你的另一點,更普遍的問題應該是社區Wiki。 – 2010-07-26 18:20:15

回答

1

通常數據綁定(至少在WebForms模型中)大多是指定要顯示的字段的情況,將DataSource屬性設置爲包含這些字段的適當對象,例如, DataReader,DataTable,Collection,並調用DataBind方法。因此,對於你select情況下,你會放一個<asp:dropdownlist runat="server" id="MyDropDownList">在標記的網頁,然後在代碼

DataSet myDataSet; 

myDataSet = someDataMethod(); 

MyDropDownList.DataTextField = fieldname; 
MyDropDownList.DataValueField = fieldname; 
MyDropDownList.DataSource = myDataSet; 
MyDropDownList.DataBind(); 

或者你可以避免寫那種代碼,做它的標記,如果您使用的是數據源控制例如<asp:SqlDataSource><asp:ObjectDataSource>

<asp:SqlDataSource runat="server" id="MySqlDataSource" ConnectionString="aConnectionString" SelectCommand="MyStoredProcName" SelectCommandType="StoredProcedure" /> 
<asp:dropdownlist runat="server" id="MyDropDownList" DataSourceId="MySqlDataSource" DataTextField="fieldname" DataValueField="fieldname"> 

爲了把你的變量在頁面上,你可能已經做過的方式是讓頁面上的標籤或文本框,在你的代碼隱藏您的變量分配到文本財產,例如

<asp:label runat="server" id="MyLabel" /> 

MyLabel.Text = myVariable.ToString(); 

回傳:您可以測試一個網頁的IsPostback財產後臺代碼,以確定它是否是一個回發與否。在Page_Load方法之後,如果您已經定義了其他方法,例如SelectedIndexChanged爲DropDownList。

0

我真的很想用例子和代碼等來回答這個問題。但我只是重複了一些已經在網絡上多年的信息,並在博客和文章中被無數次地解釋過。您可以從this article which explains almost everything you need to know開始。

我有粗體的那些我認爲重要的要注意的是我的一些撇號。

  1. <%#%>語法
  2. 的Page.DataBind()與控制。的DataBind()
  3. 數據綁定列表控制
  4. 轉發控制
  5. DataList控件
  6. 數據網格控制
  7. 訪問數據
  8. DataSet類
  9. 的DataReader類
  10. 在列表綁定控制模板
  11. 的DataBinder.Eval方法
  12. 顯式轉換
  13. ItemDataBound事件

至於在網絡表單學習MVC,這是完全不同的故事。根據你的時間,你需要知道什麼以及項目的哪些部分是重要的,他們都有優缺點。這兩種技術都可以完成同樣的事情,因爲它們都是以ASP.NET爲核心的,只是採用了不同的方法,所以無論哪種方式都可以。