У меня есть куча методов, которые управляют элементами страницы ASPX, и в этом случае имеет смысл инкапсулировать их в свой собственный статический объект. Тем не менее, похоже, что у меня нет доступа к элементам формы за пределами страницы ASPX. Любые идеи о том, как это сделать?Доступ к элементам ASPX внутри классов
ответ
Вам необходимо передать объект страницы в качестве одного из параметров вашим методам класса, таким образом, его элементы будут доступны внутри класса.
Например, если у вас есть класс, как:
public class CMyDataClass {
public bool CompareText(System.Web.UI.Page i_oPage) {
TextBox oTextBox = i_oPage.FindControl("TextBox1");
return (oTextBox.Text == "My Data");
}
}
Вы можете использовать его, как это со страницы:
CMyDataClass oMyDataClass = new CMyDataClass();
if (oMyDataClass.CompareText(this)) {
Response.Write("Ok!");
}
Если вы действительно хотите, чтобы инкапсулировать функциональность, я думаю, вы лучше всего создать класс, в котором вы передаете соответствующие элементы конструктору.
Если вы нацелены на повторное использование на других страницах, вы можете создать базовую страницу, из которой вы наследуете. Другой вариант - сделать материал на главной странице, которую вы ссылаетесь со своих страниц.
Я думаю, что более подробный вопрос требуется, чтобы дать более подробный ответ.
Вы должны передать страницу непосредственно в класс, смотрите пример ниже:
ASPX страницу
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtTest" runat="server" Text="Test" />
</div>
</form>
Code-Behind
protected void Page_Load(object sender, EventArgs e)
{
Process p = new Process(this);
string s = p.GetTextBoxValue();
}
Класс
public class Process
{
public Page thePage { get; set; }
public Process(Page page)
{
thePage = page;
}
public string GetTextBoxValue()
{
TextBox tb = (TextBox)thePage.FindControl("txtTest");
return tb.Text;
}
}
Процесс, вероятно, не лучшее название для класса, но это просто демо.
Кроме того, передача объекта страницы в другой класс плотно сопрягает этот класс с объектом Page. Я бы рекомендовал пересмотреть свой дизайн класса, который вы пытаетесь сделать, чтобы не полностью полагаться на объект страницы.
- 1. Доступ к элементам управления на странице aspx
- 2. Доступ к элементам внутри ListView
- 3. Добавление классов классов к элементам
- 4. Доступ к элементам внутри ng-шаблона
- 5. Доступ к элементам управления внутри datalist
- 6. Доступ к элементам управления HTML внутри iFrame
- 7. Доступ к элементам DOM внутри переменной
- 8. Доступ к элементам внутри ControlTemplate xaml C#
- 9. Доступ к элементам управления внутри таблицы ASP.NET
- 10. Как получить доступ к элементам внутри ExpandableListView?
- 11. Доступ к элементам внутри DataTemplate в WPF
- 12. Добавление классов к добавленным элементам
- 13. Доступ к элементам внутри массива внутри объекта в Grunt
- 14. Доступ к элементам списка просмотра
- 15. Доступ к элементам HashMap
- 16. Доступ к элементам класса
- 17. Доступ к элементам?
- 18. доступ к элементам char *
- 19. Доступ к элементам JSON
- 20. Доступ к соединенным элементам
- 21. Доступ к элементам массива?
- 22. Рубин: доступ к элементам
- 23. Доступ к элементам пустоты *?
- 24. Доступ к элементам записи
- 25. Доступ к элементам JSON
- 26. Не удается получить доступ к динамическим элементам управления (внутри ascx) с помощью javascript (на странице aspx)
- 27. Доступ к элементам вложенного массива.
- 28. Доступ к полимерным динамическим элементам
- 29. Обработка аннотаций Java: Доступ к «Элементам» без аннотированных классов возможно?
- 30. Как получить доступ к элементам управления C# из статических классов?
Почему статический объект? У этого действительно нет государства? Кроме того, это то, что вы хотите просто иметь базовый класс, чтобы вы могли наследовать функциональность в дочерних классах? Наконец, если он обрабатывает элементы страницы aspx, имеет ли смысл создавать веб-пользовательский элемент управления с элементами и инкапсулированными функциями? Короче говоря, можете ли вы привести фактический пример того, что у вас есть и чего вы хотите? – NotMe
Я не знаю, что вы подразумеваете под «У меня нет доступа к элементам формы за пределами страницы ASPX». Вы имеете в виду, что используете FindControl, и он ничего не возвращает? Пожалуйста, отправьте образец кода, чтобы объяснить, что вы делаете, и объясните ошибку немного более четко. –