jquery ajax-привязка не доступна на странице asp.net - PullRequest
0 голосов
/ 14 февраля 2012

Я связываю выпадающий список городов страны-государства на странице asp.net, используя jquery ajax. Все идет хорошо, пока страница не будет отправлена ​​обратно на сервер. Значения, которые пользователь выбрал для страны и города, недоступны для отправки функции.

Причина этого, по-видимому, заключается в том, что выпадающие элементы, привязанные к ajax, не записываются в viewstate и, следовательно, при submit никакие значения не обнаруживаются.

Какой может быть обходной путь.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Мало того, что при включенной проверке ViewState вы также должны получить исключение безопасности - поскольку значение, с которым выполняется POST-страница, отсутствует в списке доступных значений.

Движок Web Forms - паранойя, когда дело доходит до проверки запроса.

Обычное решение: 1) отключить проверку события на странице 2) не полагайтесь на SelectedItem комбо (поскольку значение, которое предоставляет браузер, отсутствует в списке), а читайте его с более низкого уровня this.Request.Form["dropdownID"].

0 голосов
/ 17 февраля 2012

Простое решение скрытого поля сохраняет выбранное значение. если обратная передача страницы, если значение скрытого поля не пустое, используйте значение, считанное из скрытого поля, для обработки на стороне сервера. «ViewState не несет ответственности за значения полей формы. Поэтому используйте скрытое поле для сохранения значения.»

Проверьте сами.

C#
   public partial class _Default : System.Web.UI.Page
    {
        public string id = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            id = this.Label1.ClientID;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string testvalue = this.Label1.Value; 
        }
    }
//break down at button1_click


 <asp:HiddenField ID="Label1" runat="server" Value="" /> 


javascript 



     $(document).ready(function () {


                $("#"+'<%=id%>').val("test");

            });

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

...