我正在构建一个页面,用户可以在其中通过构建一组搜索条件来查询一组数据,类似于 Visual Studio TFS 插件让您搜索工作项的方式:一个条件表,您可以在其中继续添加行。您为连接条件选择“和”或“或”,然后选择一个字段,输入一个值,然后选择是否需要匹配或不匹配的内容:
1. show items where [Field] [is|is not] [value]
2. [and|or] [Field] [is|is not] [value]
3. [and|or] [Field] [is|is not] [value]
etc...
现在,我正在寻找构建它的方法,我有一个想法。过去,我使用过 Knockout,但这需要我在 Javascript 中使用模型来将数据映射到,当我已经在服务器端代码中使用 C# 中的这些模型时,这似乎是多余的。当然,我可以使用 Razor 代码在强类型视图中通过作为模型一部分的标准列表进行 foreach,但我找不到添加到此列表的整洁方法。
C# 中的模型结构(大致)是这样的:
Field
:- 字段名称
- 值的选项列表
- is/is not 选项的布尔值。
Criterion
:Field
- 选定值
- 组合类型(和/或)
Query
:- s列表
Criterion
(不说标准看起来很奇怪) - 开始和结束日期
- 用户的访问级别
- 查看字段和排序选项
- s列表
QueryViewModel
:Query
- 用于填充视图选项选择区域的分类列表
- 页面上其他(不相关)显示的一些元数据
在 Knockout 中,我会在“添加搜索条件”按钮中添加一个单击方法,以将新条目添加到条件列表中。我可以使用 Razor 功能块 ( @functions { ... }
) 来实现类似的结果吗?我已经尝试了一些东西,但是我发现视图模型似乎不在范围内,或者无法更新页面以显示视图模型的新内容(尽管我正在尝试一些涉及将新更新的视图模型传递给局部视图,这可能会以某种方式工作)。这可以做到吗,还是我需要深呼吸并回到 Javascript?