Я не вижу, где я поступил неправильно, поэтому я ищу какую-то помощь.
Я пытаюсь использовать свой настраиваемый элемент управления с параметрами в ретрансляторе. Параметр всегда равен нулю, когда я его отлаживаю, хотя одно и то же выражение возвращает данные в предыдущей строке кода.
Внутри моего контроля у меня есть:
public string paddockName { get; set; }
И я назначаю его на моей странице asp.net как:
<mp:Historical runat="server" paddockName='<%# Eval("Name") %>' />
Я сделал предыдущую строку кода в соответствии с приведенным ниже, и она отлично работала, поэтому выражение верное.
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
Я видел предыдущий вопрос ASP.NET: привязать значение к пользовательскому элементу управления внутри ретранслятора, что почти точно так же, как и моя проблема, но ответ просто говорит: "Я сделал небольшой тест, и я получил его, если ProductID - это строка. " и это не помогает мне понять, как они заставили его перестать быть нулевым при отладке.
Проблема в том, что значение привязки данных теряется, когда происходит обратная передача кнопки. Значение свойства задается только для продолжительности запроса страницы с вызовом DataBind(). Щелчок кнопки - это новый запрос страницы. Элементы управления.NET хранят связанное значение в ViewState, чтобы они были доступны на почте. Вы можете сделать то же самое, изменив способ хранения свойства.
public string paddockName {
get { return Convert.ToString(ViewState("paddockName")); }
set { ViewState("paddockName") = value; }
}