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