0
好吧,我有一個UserControl。它是一個文本框和其他類似的東西,還有一個保存按鈕。回傳和數據綁定 - 跳過部分頁面生命週期?
我在ItemTemplate的Repeater控件中有這個UserControl。
現在每當我第一次運行它,它似乎工作正常。當我更改文本框的內容並去保存它,但我得到各種空引用錯誤。
最容易混淆的部分是,它似乎創建了我的課程的新實例,但跳過了Page_Load
方法等。這是我的代碼在用戶控件
Data.Report ThisReport;
[Browsable(true)]
public int ReportID
{
get;
set;
}
protected void Page_Load(object sender, EventArgs e)
{
if (ReportID == 0)
{
throw new ArgumentException("ReportID can not be 0");
}
var report = Data.Report.SingleOrDefault(x => x.ID==ReportID);
txtName.Text = report.Description;
ThisReport = report;
}
protected void btnSave_Click(object sender, EventArgs e)
{
var x=ThisReport.Foo; //ThisReport == null here.
}
樣品它在中繼器使用的是這樣的:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ReportsData">
<ItemTemplate>
<uc:ReportManager ReportID="<%# ((Data.Report)Container.DataItem).ReportID %>"
runat="server" />
</ItemTemplate>
</asp:Repeater>
爲什麼它似乎初始化我的用戶的一個新實例?我如何克服這個問題?
不,var report = ...'返回一個有效的報告對象。問題是當save事件被調用時,它會被調用一個沒有調用Page_Load的類的新實例。另外,我在這個特定的頁面上禁用了ViewState。 – Earlz 2010-08-27 21:56:36
我不明白爲什麼ViewState甚至是需要的,我的意思是這一切都發生在一個單一的請求! – Earlz 2010-08-27 21:58:02