jquery select2插件id为空导致服务端搜索不到内容问题的解决

mvc的一个select控件采用select2插件来控制。是这样写的:

arr.unshift({ id: "", text: "请选择" });
$("#level2").select2({
  data:arr
});
增加了一个id=""的项,文本内容时请选择。在服务端会判断level2会否为空,如果为空,则构建相应linq语句的时候没有此搜索。如果不为空,
则构建此搜索条件。代码如下:
if (level2.IsNotNullAndEmpty())
{
   
   int iid = level2.ToInteger();
   lambda2 = lambda2.And(m => m.IID == iid);
}
但是搜索的时候却出现了问题。如果搜索条件不是请选择,而是其他搜索条件。即level2不为空,则能搜索到相应的结果。但是一旦level2没有任何
条件,即选择了请选择,则搜索不到任何结果。这个时候因为id为空,应该是搜索到所有结果的。感到万分奇怪。增加了一个日志输出:
if (level2.IsNotNullAndEmpty())
{
   EventLog.WriteLog(level2);
   int iid = level2.ToInteger();
   lambda2 = lambda2.And(m => m.IID == iid);
}

level2居然是请选择,这什么情况,不是应该是为空么。怎么把option的text值读入这里面了。
在客户端增加如下代码测试获取的select控件值:
$("#level2").change(function () {
    console.info($("#level2").val());
});
当名为level2的select控件发生change改变的时候输出select值。当select为请选择的时候,console.info输出就是请选择。我进行了一下更改,
arr.unshift({ id: "-1", text: "请选择" });
这个时候,再当选择请选择的时候,console.info输出是-1了。推测应该是select2插件的机制。当为空的时候,获取了该option的text值。
如果不为空,则直接获取的是id的值



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值