我有一个使用 C# 的 ASP.NET MVC 项目。我有一个关于 MVC 模式的问题。
我目前在下拉列表的“查看”页面上进行了过滤,例如,对于其中一个列表,我有一个充满数据的表,我在其中根据几个下拉列表过滤数据。在另一个视图中,我有 3 个下拉列表,第一个下拉列表过滤第二个和第三个下拉列表,我在视图页面上使用 Javascript 编写了这些过滤函数。
这可以吗?还是我应该尝试将此过滤添加为控制器中的功能?
谢谢
对于较小的集合,需要获取所有查找并将它们发送到客户端,因此可以过滤客户端。然而,这对于更大的动态滤波器来说可能会令人望而却步。例如,如果您在美国并且有一份州和城市列表,其中城市列表将随着客户数量的增加而增长。
您不希望遇到这样的情况:将整个查找表加载到内存中,并在可能只需要少数的情况下通过网络发送这些表。随着系统的增长,性能会下降。在这种情况下,州列表可以由视图模型填充,但会触发 Ajax 调用以返回该州的城市列表。更好的方法可能是将城市下拉列表替换为去反弹的自动完成功能,这样在您键入时,Ajax 会调用 /w 所选的州 ID 来构建要显示的城市列表。它不必总是这样或那样,如果您使用 Ajax 调用,则一切都必须是 Ajax。只要在合适的地方使用它即可。
无论采用哪种方法,任何在客户端过滤的组合在使用时仍然需要在服务器端进行验证。例如,如果国家/地区的下拉列表过滤了州/省/自治区/直辖市,然后您选择国家/地区、州/省/自治区和城市的选择来保存新记录或执行某些其他操作,则该操作的服务器端代码应验证城市ID属于州,而在任何东西被持久化之前,该州属于国家。 客户端验证的任何内容都不应该被信任,一切都可以被知道如何篡改的人篡改。