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为空,应该是搜索到所有结果的。感到万分奇怪。增加了一个日志输出:level2居然是请选择,这什么情况,不是应该是为空么。怎么把option的text值读入这里面了。if (level2.IsNotNullAndEmpty()) { EventLog.WriteLog(level2); int iid = level2.ToInteger(); lambda2 = lambda2.And(m => m.IID == iid); }
在客户端增加如下代码测试获取的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的值