Как сделать так, чтобы моя страница ASP.NET кодировала значение, выбранное в списке, в качестве параметра URL-адреса HTTP-запроса? - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть список на странице ASP.NET:

<select id="Language" multiple size="5" name="Language" runat="server">
    <option value="English" selected>English</option>
    <option value="French">French</option>
    <option value="German">German</option>
</select>

, а в форме, содержащей этот список, есть кнопка «Отправить»

<asp:Button id="btnPost" runat="server" text="Submit"
    postbackurl="ProcessData.asmx"/>

Я хотел быстраница для формирования запроса к ProcessData.asmx?Language=X, если в списке выбрано X.

Как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 21 февраля 2011

Ваш выбор просто должен быть частью формы.После отправки формы отправьте все внутренние контрольные значения в действие.

<form id="submit" action="ProcessData.asmx" runat="server">
<select id="Language" multiple size="5" name="Language" runat="server">
    <option value="English" selected>English</option>
    <option value="French">French</option>
    <option value="German">German</option>
</select>
<input type="submit" text="Submit form"/>
</form>

Кнопка «Отправить» с заданием «выполнить» за вас:)

0 голосов
/ 21 февраля 2011

Я предлагаю вам сделать следующее:

1) Подключите событие OnClientClick кнопки отправки. 2) Отмените это событие, используя return false. 3) В обработчике события OnClientClick отправьте вручную запрос GET в ProcessData.asmx с помощью XmlHttpRequest и добавьте необходимый параметр строки запроса. Я предлагаю использовать для этого стороннюю библиотеку JavaScript Ajax. Вот краткий пример использования jQuery:

<script type="text/javascript">
    function clientClick() {
        var $ = jQuery;
        $.get(
            url = "ProcessData.asmx",
            data = { Language : $get('<%= Language.ClientID %>').value }
        );
    }


</script>

 <asp:Button runat="server" ID="Button1" Text="Postback" OnClientClick="clientClick(); return false"/>
0 голосов
/ 21 февраля 2011

Вы должны иметь возможность получить значение на целевой странице, используя Request.Form["Language"]

Или установите для атрибута OnClientClick значение "javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('btnPost', '', '', false, '', 'ProcessData.asmx?Language=' + GetSelectedLang();, false, false))"

и добавьте функцию JavaScript GetSelectedLang () на вашу страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...