虽然我在这个问题中要详细说明的问题非常具体,但我想它应该可以帮助像我这样的其他初学程序员。我有以下情况:在我正在设计的系统中,用户可以选择在数据库中设置搜索的值(而不是仅仅将控制器操作的参数路由到数据库中对象的id,正如我之前所做的那样),包含以下字段:
如何将这些元素放在页面上并在数据库中搜索指定的值?我的意思是,如何将此字段设置为可以发送到POST操作的对象,以便它可以与数据库进行比较并获取值?我试图做的包括为此创建一个编辑器模板(但我无法理解我在做什么),并且我尝试创建一个控制器来处理这些查询,所以我可以在另一个中呈现查询页面(但我最终得到了一个页面内的页面,最好是“yo dawg I haerd u liek”风格)。
你们能给我一些帮助,所以我不必放弃成为一名程序员并成为说唱歌手吗?
答案 0 :(得分:1)
这是一个很好的例子:
我认为它是用MVC 2编写的,但很容易转换为3。
答案 1 :(得分:0)
我不太明白你的问题在你的视图中过滤了什么实体,所以我只称它为“实体”。 在您的控制器中,您应该有一个实体存储库(如果您对存储库模式不熟悉,您应该查找它) 如果你有这个设置,过滤不应该太困难:
创建一个视图模型类,如下所示:
public class EntityFilterViewModel()
{
string PowerPlanet {get;set;}
string GeneratingUnits {get;set;}
string Period{get;set;} // Simplification, you should use timespan or something.
DateTime BeginTime {get;set;}
DateTime EndTime {get;set;}
}
接下来,有一个像这样的控制器方法:
public ActionResult Filter(EntityFilterViewModel model)
{
var result = from e in _entityRepository.Entites
where e.PowerPlanet.Equals(model.PowerPlanet) &&
e.GeneratingUnits.Equals(model.GeneratingUnits) &&
e.Periond.Equals(model.Period)
// other filters you would want...
return View("List", result); // use the overload which takes a view name and a viewmodel object
}
您应该记住,但要考虑用户未填写过滤表单中所有字段的情况