用户控件控件为空

时间:2017-08-07 09:38:55

标签: c# jquery asp.net web-services

我正在使用webService.asmx调用Jquery并且在该服务中我正在检索usercontrol控件的值以将它们保存在数据库中但是用户控件已经抛出了NullReferenceException 1}}

这里是Ajax电话

function SaveEdit()
    {
        $.ajax({
            type: "POST",
            url: "Services/RatiosSettingsService.asmx/UpdateRatios",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) { }
        });
    }

这是WebService代码

[WebMethod]
    public void UpdateRatios()
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Crs2"].ConnectionString))
        {
            ADO ado = new ADO();
            List<SqlParameter> parameters = new List<SqlParameter>();
            ucOtherRatios2 obj = new ucOtherRatios2();

            Dictionary<string, int> hs = obj.GetHsChks();

            foreach (KeyValuePair<string, int> item in hs)
            {
                SqlParameter para = new SqlParameter(item.Key, item.Value);
                parameters.Add(para);
            }

            con.Open();
            ado.CUDSp("UpdateRatios", "spUpdateClientRatios",parameters,con);
            con.Close();
        }
    }

这里是在usercontrol方法中发生异常的地方,它检索控件值

public Dictionary<string, int> GetHsChks()
    {
        Dictionary<string, int> chks = new Dictionary<string, int>();

        chks.Add("@siAnalysisOtherRatiosHistorical1", Convert.ToInt32(chkOthWcHs.Checked));
        chks.Add("@siAnalysisOtherRatiosHistorical2", Convert.ToInt32(chkOthWiHs.Checked));
        chks.Add("@siAnalysisOtherRatiosHistorical3", Convert.ToInt32(chkOthTlgHs.Checked));
        chks.Add("@siAnalysisOtherRatiosHistorical4", Convert.ToInt32(chkOthEiHs.Checked));
        chks.Add("@siAnalysisOtherRatiosHistorical5", Convert.ToInt32(chkOthEcHs.Checked));

        chks.Add("@siAnalysisOtherRatiosHistorical6", Convert.ToInt32(chkOthEicHs.Checked));
        chks.Add("@siAnalysisOtherRatiosHistorical7", Convert.ToInt32(chkOthEsHs.Checked));
        chks.Add("@siAnalysisOtherRatiosHistorical8", Convert.ToInt32(chkOthEtHs.Checked));

        return chks;
    }

它表示复选框为空

2 个答案:

答案 0 :(得分:0)

您无法通过网络方式访问网页控件。 由于网络方法不具有页面状态。它不是一个完整的回发。相反,会话cookie随请求一起传播。您必须执行整页回发以获取或设置控件值。 或者你必须通过AJAX post方法发送控件的值。

您可以在以下链接中获得更多详细信息:

How to access page controls inside a static web method?

答案 1 :(得分:0)

我在jQuery中看到一件事有什么好处可以改变。如果只获取JSON数据,Maby最好在jQuery中使用$.getJSON()函数。在那里,您可以使用.done()获取数据,使用.fail()获取debbug。

接下来是设置POST或GET变量以将数据传递到JSON文件以获取正确的数据。