Обратная передача Webforms с несколькими аргументами - PullRequest
0 голосов
/ 06 марта 2019

Я хочу вызвать функцию __doPostBack(eventTarget, eventArgument). В файле кода я бы затем прочитал аргументы как обычно: Dim param As String = Request("__EVENTARGUMENT"). Однако это не работает для нескольких аргументов.

Кто-то здесь предложил использовать json или csv-list. Обычно я просто выбираю разделитель, разделяющий мои аргументы. Однако в моем случае теперь аргумент может содержать любой символ, поэтому я не могу просто выбрать какой-либо разделитель, поэтому я решил использовать JSON.

Я пробовал это.

Markup:

<button type="button" id="btn_postbackButton" onclick="__doPostBack('btn_postbackButton', {one: 'someText', two: 'moreText'});">TestButton</button>

Код-файл

If (IsPostBack) Then
    Dim tgt As Object = Request("__EVENTTARGET")
    Dim param As Object = Request("__EVENTARGUMENT") ' what datatype to use?
    ' [...]
    ' how to get arguments from json?
End If

Теперь, как мне вернуть мои аргументы в коде? Какой тип данных я использую для параметров? Вызов param.ToString() только возвращает [object Object]

Более того, аргументы генерируются в файле кода в моем реальном приложении, и они могут быть разными, а некоторые могут отсутствовать, использование простого массива не работает для меня, поскольку вы не можете определить после факта какая позиция массива соответствует какому аргументу. И независимо от того, что все еще дает мне [object Object].

1 Ответ

1 голос
/ 06 марта 2019

При нажатии на кнопку на странице отправляются следующие поля формы HTML:

__EVENTTARGET: btn_postbackButton
__EVENTARGUMENT: [object Object]

Чтобы получить ваш JSON на стороне сервера в виде строки, используйте следующую разметку кнопки:

<button type="button" id="btn_postbackButton" onclick="__doPostBack('btn_postbackButton', '{one: \'someText\', two: \'moreText\'}');">TestButton</button>
...