我已经在IQueryable类型上创建了一个扩展方法,它接受一些实体并根据一些标准对它们进行过滤.我的问题是我不能返回由变量组成的Union表达式,而不是先将所有变量初始化.作为aprears的空值无效.
public static IQueryable<Person> FilterHairColors(this IQueryable<Person> subQuery, string[] hairColors)
{
IQueryable<Person> q1 = null;
IQueryable<Person> q2 = null;
IQueryable<Person> q3 = null;
IQueryable<Person> q4 = null;
foreach (var value in hairColors)
{
switch (value)
{
case "1":
q1 = subQuery.Where(p => p.HairColor_bright == true);
break;
case "2":
q2 = subQuery.Where(p => p.HairColor_brown == true);
break;
case "3":
q3 = subQuery.Where(p => p.HairColor_dark == true);
break;
case "4":
q4 = subQuery.Where(p => p.HairColor_red == true);
break;
}
}
return q1.AsQueryable().Union(q2.AsQueryable()).Union(q3.AsQueryable()).Union(q4.AsQueryable());
} …Run Code Online (Sandbox Code Playgroud) 我使用一个名为jscroller的jQuery插件,它使用jquery.ajax进行ajax调用.我需要从搜索表单传递所有参数,并将它们传递给mvc控制器,我认为最好的方法是在'data'字段中输入以下expr':
$('#formId').serialize();
Run Code Online (Sandbox Code Playgroud)
我的问题是,我需要传递一个"页面"值以及表单值,该值随每次调用而改变.
如何将页面值与"数据"字段中的"序列化"表达式一起放置,还是有另一种更有效的方法呢?
我使用MVC并希望通过jquery提交表单,但是对于mvc内置验证在任何无效输入的情况下工作,我已经调整了click事件的"return false"(也试过"event.preventDefault") "),如果从控制器获得"成功"json返回.
这是代码:
$(document).ready(function () {
var request;
$('#formSubmit').click(function (event) {
request = $.ajax({
url: '/personManager/loadDetails/',
type: 'post',
data: $('form').serialize()
});
request.done(function(data){
if(data=="success")
event.preventDefault();
});
});
});
Run Code Online (Sandbox Code Playgroud)
我不能让它发挥作用......我做错了什么?还有,有没有更有效的方法来保持mvc验证机制,同时使用jquery?
更新:如果我试图更简单地描述我的愿望:我想要调整click事件的preventDefault,所以在某种情况下它将调用表单submit,而在其他情况下,它将不会,并且只有$ .ajax工作.在我在服务器端确认没有发生任何动作之后,第二个是有效的.必须有办法,我猜...