我使用带有Razor视图的MVC 4 ASP.net。
因此,通过我的ajax调用,我想改进搜索结果。但是,我通过在控制器中创建连接数据库并包含所有搜索过滤器的方法来实现此目的。然而这是不实际的,因为该方法包含一个巨大的开关盒,里面有各种开关盒。
这是不实际的,所以我的qeustion是如何在View中检索表信息运行时?我知道如何使用我的AJAX方法传递参数,并使用它来访问进入数据库的方法。然而,将当前视图列入其列表并修改该列表会更好。基本上我想将所有数据库调用更改为我在参数中获取的列表,这样我可以调整该列表中的内容而不是在每个过滤器后连接到数据库我只是不知道如何传递视图中的当前列表< / p>
这是我的AJAX电话:
$(checkbox5yearsfilter).click(function () {
if ($(checkbox5yearsfilter).is(':checked')) {
$.ajax({
type: 'POST',
url: '../Person/changeTableOnWorkExp',
datatype: 'html',
data: { parameter: $('#parameter').val(), choice: $('#choice').val(), years: 5, ischecked: "yes" },
success: function (data) {
$('span div.searchresults').html(data);
},
error: function (data) {
alert("Something went wrong with the call, have you searched already?");
}
});
}
这是我的方法太长了:
public PartialViewResult changeTableOnWorkExp(string parameter, string choice, int years, string ischecked)
{
List list = new List();
if (ischecked == "yes")
{
switch (years)
{
case 5:
switch(choice)
{
case "Knows Already":
list = (from p in db.Persons where p.YearsOfWorkExperience > 5 && (p.HobbyProjectICTRelated.Contains(parameter) || p.LearntSkillsAndLevelOfSkills.Contains(parameter)) select p).ToList();
return PartialView("_SearchSkills", list);
case "Wants To Learn":
list = (from p in db.Persons where p.YearsOfWorkExperience > 5 && p.SkillsToLearn.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
case "Hobbies":
list = (from p in db.Persons where p.YearsOfWorkExperience > 5 && p.Hobbys.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
case "Name":
list = (from p in db.Persons where p.YearsOfWorkExperience > 5 && p.Name.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
}
break;
case 10:
switch(choice)
{
case "Knows Already":
list = (from p in db.Persons where p.YearsOfWorkExperience > 10 && (p.HobbyProjectICTRelated.Contains(parameter) || p.LearntSkillsAndLevelOfSkills.Contains(parameter)) select p).ToList();
return PartialView("_SearchSkills", list);
case "Wants To Learn":
list = (from p in db.Persons where p.YearsOfWorkExperience > 10 && p.SkillsToLearn.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
case "Hobbies":
list = (from p in db.Persons where p.YearsOfWorkExperience > 10 && p.Hobbys.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
case "Name":
list = (from p in db.Persons where p.YearsOfWorkExperience > 10 && p.Name.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
}
break;
case 15:
switch(choice)
{
case "Knows Already":
list = (from p in db.Persons where p.YearsOfWorkExperience > 15 && (p.HobbyProjectICTRelated.Contains(parameter) || p.LearntSkillsAndLevelOfSkills.Contains(parameter)) select p).ToList();
return PartialView("_SearchSkills", list);
case "Wants To Learn":
list = (from p in db.Persons where p.YearsOfWorkExperience > 15 && p.SkillsToLearn.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
case "Hobbies":
list = (from p in db.Persons where p.YearsOfWorkExperience > 15 && p.Hobbys.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
case "Name":
list = (from p in db.Persons where p.YearsOfWorkExperience > 15 && p.Name.Contains(parameter) select p).ToList();
return PartialView("_SearchSkills", list);
}
break;
default:
list = null;
return null;
}
return null;
}
else
{
list = getListPerson(parameter, choice);
return PartialView("_SearchSkills", list);
}
}