C# 根据复选框更改用于自动填充通用处理程序的存储过程

C# 根据复选框更改用于自动填充通用处理程序的存储过程,c#,asp.net,json,webforms,C#,Asp.net,Json,Webforms,我有一个处理程序,用于根据输入文本框中写入的术语进行自动填充。我可以根据文本框中输入的内容获取术语并实时执行存储过程。但是我想根据输入文本框旁边的复选框执行不同的存储过程。主要的问题是,自动填充是从IHttpHandler中执行的,我似乎无法从web表单后端将带有存储过程名称的单个字符串发送到.ashx 我尝试从web表单后端发送存储过程的名称 我尝试从webform后端发送任何数据,具体取决于复选框是否选中,然后根据if-else语句中的字符串使用其中一个存储过程(使用会话和重定向请求) 我尝

我有一个处理程序,用于根据输入文本框中写入的术语进行自动填充。我可以根据文本框中输入的内容获取术语并实时执行存储过程。但是我想根据输入文本框旁边的复选框执行不同的存储过程。主要的问题是,自动填充是从IHttpHandler中执行的,我似乎无法从web表单后端将带有存储过程名称的单个字符串发送到.ashx

  • 我尝试从web表单后端发送存储过程的名称
  • 我尝试从webform后端发送任何数据,具体取决于复选框是否选中,然后根据if-else语句中的字符串使用其中一个存储过程(使用会话和重定向请求)
  • 我尝试使用json发送数据并测试if=!空
  • 当我使用Response.Redirect(“FoodHandler.aspx?param=Search4”)时,当我单击复选框时,我被重定向到执行存储过程的页面,我只看到一个完整的字符串数组
  • 我的aspx后端:

        public partial class SearchPageWithDynamicSQL : System.Web.UI.Page
           protected void Page_Load(object food, EventArgs a)
           {
            if(!IsPostBack)
            {
                checkbox2.Checked = false;
                checkboxhidden.Value = "Search3";
    
            }
    
         }
        public void Check_Clicked(object check, EventArgs c)
        {
             if (checkbox2.Checked)
               {
                   StringA = "Search4";
                   Session["param"] = "Search4";
               }
               else
               {
                StringA = "Search3";
                Session["param"] = "Search3";
    
                 }
               checkboxhidden.Value = StringA;         
           }
    
    我的经纪人:

            public class Handler1 : IHttpHandler
             {
    
          public string blarny { get; set;}
          public void ProcessRequest(HttpContext context) 
           {
    
    
            blarny = context.Session["param"].ToString();
    
            string term = context.Request["term"] ?? "";
            List<string> listFOODNAME = new List<string>();
    
            string cs = 
    ConfigurationManager.ConnectionStrings["connectionStr"].ConnectionString;
            using(SqlConnection con = new SqlConnection(cs))
            {
    
                SqlCommand cmd = new SqlCommand(blarny, con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter()
                {
                    ParameterName = "@term",
                    Value = term
                });
                con.Open();
                SqlDataReader rdr = cmd.ExecuteReader();
                while(rdr.Read())
                {
                    listFOODNAME.Add(rdr["Long_Desc"].ToString());
                }
            }
            JavaScriptSerializer js = new JavaScriptSerializer();
            context.Response.Write(js.Serialize(listFOODNAME));
    
    公共类句柄1:IHttpHandler
    {
    公共字符串blarny{get;set;}
    公共void ProcessRequest(HttpContext上下文)
    {
    blarny=context.Session[“param”].ToString();
    字符串项=上下文。请求[“项”]??“”;
    List listFOODNAME=新列表();
    字符串cs=
    ConfigurationManager.ConnectionString[“connectionStr”].ConnectionString;
    使用(SqlConnection con=newsqlconnection(cs))
    {
    SqlCommand cmd=新的SqlCommand(blarny,con);
    cmd.CommandType=CommandType.storedProcess;
    cmd.Parameters.Add(新的SqlParameter()
    {
    ParameterName=“@term”,
    值=术语
    });
    con.Open();
    SqlDataReader rdr=cmd.ExecuteReader();
    while(rdr.Read())
    {
    添加(rdr[“Long_Desc”].ToString());
    }
    }
    JavaScriptSerializer js=新的JavaScriptSerializer();
    Write(js.Serialize(listFOODNAME));
    
    我的前端:

           <div class="col-xs-7">
                            <input type="text" runat="server" class="form-control"
                                id="inputLong_Desc" placeholder="Search for food" />
                        </div>
    <div class="container" style="position:relative;top: 20px; left:60px" id="checkboxy">      
                   <asp:HiddenField ID="checkboxhidden" runat="server"/>
                   <asp:CheckBox id="checkbox2" runat="server" AutoPostBack="True" Text=" Search only basic foods." TextAlign="Right" OnCheckedChanged="Check_Clicked"/>
                           </div>
    
    
    我可以通过复选框切换存储过程。
    当我使用
    SqlCommand cmd=新的SqlCommand(“Search4”,con);
    它工作得很好。
    提前谢谢你的帮助!

    我应该加上

       [WebMethod(EnableSession = true)]
    
    在我的aspx文件和

        public class Handler1 : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
    
    在我的处理程序中,发送数据