我对 MVC 4 ( Razor )相对较新,正在编写一个简单的Web应用程序,允许用户搜索单个表数据库并过滤搜索结果使用复选框。
我目前正在实施相当多的if / then语句,首先检查三个搜索框中的哪一个被填充(为了便于在三个搜索框中使用,只需要一个搜索按钮)
然后,我检查是否选中了10个(是,十个!)个别复选框中的任何一个并填充了(每个复选框都是表格中不同列的过滤器)。
在每个嵌套if语句的大鼠嵌套的底部,我构建了一个查询。 然后,在最后的外部if语句中,我采用构建的查询并运行它。
我的问题是,有没有比我目前使用的更好,更快,更有效的方法。 我担心的是,这个应用程序很可能会增长并需要更多的过滤器,因此需要指数级更多的嵌套if语句来检查选择哪些过滤器进行搜索。
如果是这样,那么一切都很好,但如果有更好的设计,那么我宁愿使用它,而不是试图维持这个不断增长的怪物。
平台是IIS服务器.Net 4.5.1,利用Linq to SQL到2012 SQL Server数据库。标准MVC 5 .Net Razor
if ((countryBox == "true") && (regionBox == "true"))
{
// Build query string
if (!String.IsNullOrEmpty(searchString))
{
//incorporate searchString
}
else
{
//searchString empty
}
}
else if (regionBox == "true")
{
// Build query string
if (!String.IsNullOrEmpty(searchString))
{
//incorporate searchString
}
else
{
//searchString empty - set references to segmentBox search
}
}
else if (countryBox == "true")
{
// Build query string
if (!String.IsNullOrEmpty(searchString))
{
//incorporate searchString
}
else
{
//searchString empty
}
}
else
{
if (!String.IsNullOrEmpty(searchString))
{
// Build query string
}
}
//return View(references.ToList());
int pageSize = 10;
int pageNumber = (page ?? 1);
return View(references.ToPagedList(pageNumber, pageSize));