通过JQuery设置文本框值

通过JQuery设置文本框值,jquery,asp.net,Jquery,Asp.net,我正在通过ajax帖子设置一个文本框控件值 $('#txtSite').val(msg.d.SiteName); 这正在工作,文本框的值已正确更改。但是,当我将信息发布到数据库时,txtSite.Text值是空的 有什么想法吗?我疯了吗 填充文本框的代码: $.ajax({ type:"POST", url: "MyPage.aspx/ValidateSite", data: "{ siteID: '" + $('#txtSiteID').val() + "' }",

我正在通过ajax帖子设置一个
文本框
控件值

$('#txtSite').val(msg.d.SiteName);
这正在工作,
文本框
的值已正确更改。但是,当我将信息发布到数据库时,
txtSite.Text
值是空的

有什么想法吗?我疯了吗

填充文本框的代码

$.ajax({
    type:"POST",
    url: "MyPage.aspx/ValidateSite",
    data: "{ siteID: '" + $('#txtSiteID').val() + "' }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        if (msg.d != null) {
            $('#txtSite').val(msg.d.SiteName);  // It's definitely doing this
        }
        else {
            $('#txtSite').val('');
        }
    },
    error: function(msg) {
    }
});
保存到服务器的代码(所有连接等都正确且正常工作)。此代码位于ASP按钮单击事件中:

SqlCommand cmd = new SqlCommand("INSERT INTO [Sites] ([SiteName]) VALUES ('" + txtSite.Text + "')", conn);
cmd.ExecuteNonQuery();
文本框的定义如下:

<asp:TextBox ID="txtSite" runat="server" AutoComplete="off" TabIndex="4" MaxLength="50" Style="width: 230px" Enabled="false" CssClass="FormDisabledTextWithSmallHeight" />

仍然返回空值。

是的,我肯定认为,您的文本框在html代码中应该有name属性,请检查它。如果没有“name”属性,浏览器将不会将此输入框的数据发布到服务器,因此无法在服务器端c#代码中获取数据。希望,这是有意义的。

您将文本框设置为
Enabled=“false”
,在浏览器中以
disabled=“disabled”
呈现

解决方案是启用文本框并使其只读:

txtSite.Enabled = true;
txtSite.Attributes.Add("readonly", "readonly"); //on prerender event or somewhere else
或者在
runat=“server”
中使用不同的元素集,如
,并使用AJAX调用更新文本框和备用元素:

success: function(msg) {
    if (msg.d != null) {
        $('#txtSite').val(msg.d.SiteName);
        $('#hiddenInput').val(msg.d.SiteName);
    } else {
            $('#txtSite').val('');
    }
}

#txtSite
是否具有
名称
属性?@austinbrunkhost,是否需要名称属性?我有它的
ID
。我会试试看。@kad1r:我发布的不是JQuery。JQuery post从数据库获取值并填充文本框。它正确地填充了文本框,但是当我使用CSharp代码保存数据时,
textbox.Text
属性为空。您说您正在执行
textbox.Text
。给我们看看你所有的代码。呃,等等,你发布的代码不相关。向我们显示提交表单的代码。我怀疑这是VIEWSTATE没有返回到服务器的问题。我将要求您共享您的.aspx文件代码(主要关注哪一部分)以及后端c#代码完整功能,以便我们能够以良好的方式进行查看。谢谢。我尝试过将字段设置为
只读
,但还是失败了。昨天早上,我实现了
HiddenField
解决方案作为一种变通方法。
success: function(msg) {
    if (msg.d != null) {
        $('#txtSite').val(msg.d.SiteName);
        $('#hiddenInput').val(msg.d.SiteName);
    } else {
            $('#txtSite').val('');
    }
}