jQuery ajax绑定无法在asp.net页面上获取

时间:2012-02-14 19:14:39

标签: c# asp.net .net jquery viewstate

我使用jquery ajax绑定asp.net页面上的国家/地区城市下拉列表。 一切顺利,直到页面回发到服务器。用户为国家/地区和城市选择的值无法提交功能。

这样做的原因似乎是从ajax绑定的下拉项目没有写入viewstate,因此在提交时没有找到值。

可以采用哪种解决方法。

2 个答案:

答案 0 :(得分:3)

不仅如此,在启用ViewState验证的情况下,您还应该获得安全性异常 - 因为页面POST的值不在可用值列表中。

Web Forms引擎在请求验证方面是一种偏执狂。

通常的解决方案是: 1)禁用页面的事件验证 2)不要依赖于组合的SelectedItem(因为浏览器提交的值不在列表中),而是从较低级别this.Request.Form["dropdownID"]读取。

答案 1 :(得分:0)

简易解决方案隐藏框可以保存所选值。如果页面回发,如果隐藏的框值不为空,则使用从隐藏框读取的值进行服务器端处理。 “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");

            });

所以你需要做的就是在选择项目时向dropdownbox添加一个事件监听器更新隐藏字段的值,然后当服务器端点击事件发生时,使用隐藏字段中的值,个人而言,我不喜欢关闭viewstate验证。