asp.net: (c# client-side) как получить доступ к элементу html, созданному после загрузки страницы?


Представьте себе это,

Шаг 1: загрузка страницы ASPX.
Шаг 2: Кнопка запускает скрипт, который создает html-элемент (div, span и т. д.) с идентификатором или тегом класса, включая атрибут runat server.

И моя проблема в том,

Последний шаг: из моего файла C#, Как получить доступ к этому элементу и получить его внутренний html, чтобы я мог сохранить его в строку?

PS: я использую эту строку, чтобы сохранить ее в моей базе данных mssql.

3 4

3 ответа:

Вы не можете создать "реальный" элемент runat=server / control, не выполнив полную обратную передачу на сервер.

Лучшим подходом может быть написание некоторого скрипта, который хранит innerHTML в ASP.Net скрытое поле непосредственно перед отправкой страницы. Затем вы можете получить доступ к значению этого скрытого поля, чтобы захватить данные.

Если вы хотите динамически создавать несколько объектов, вам нужно будет использовать стандартные скрытые поля ввода html, так как вы не можете создать asp.net сервер управление через javascript.

<input type="hidden" name="fieldData_1" value="control 1 html content">
<input type="hidden" name="fieldData_2" value="control 2 html content">

После этого вы сможете получить доступ к этим скрытым полям из запроса.Объект вида:

Request.Form["fieldData_1"]
Зная это, теперь вы можете перебирать данные формы и обрабатывать все ваши динамические поля
foreach (string fieldData in Request.Form)
{
    if(fieldData.Contains("fieldData_"){
        //process the data for each field
    }
}

Также можно избежать использования скрытых полей все вместе и просто передать ваши данные на сервер непосредственно с помощью метода _ _ doPostback (","). Это может быть реализовано многими различными способами, поэтому я просто отсылаю вас к http://dopostback.net чтобы узнать, как работает этот метод.

Добавьте атрибут runat="server" к тегу, чтобы сделать его HTML-элементом управления и доступным из .cs-файл по его ID

Я думаю, что вам нужно отправить элемент inner HTML обратно на сервер. То, что я бы сделал, в клиентской функции, получить внутренний HTML-код вновь созданного элемента, сохранить его в скрытом поле, а затем вызвать __doPostBack('<hidden element id>', '');