【发布时间】:2014-11-13 11:40:52
【问题描述】:
在我之前的asp.net mvc web项目中,我使用手动做列排序、过滤、搜索等。
但现在我读到了可用的网络网格插件,例如 jqGrid、jtable 等,因为它可以为我节省大量时间来提供排序、过滤、分页功能。 但是我有几个关于在 asp.net mvc 视图中使用这些 web 网格的问题,因为使用这些 web 网格时我似乎会失去重要的 asp.net mvc 功能。
- 例如,在构建 jqgrid 时,我将在我的 razor 视图中编写如下内容:-
<script type="text/javascript"> jQuery("#jQGridDemo").jqGrid({ url: '', datatype: "json", colNames: ['Id','First Name', 'Last Name', 'Last 4 SSN', 'Department', 'Age', 'Salary', "Address",'Marital Status'], colModel: [ { name: '_id', index: '_id', width: 20, stype: 'text' }, { name: 'FirstName', index: 'FirstName', width: 150 }, { name: 'LastName', index: 'LastName', width: 150 }, { name: 'LastSSN', index: 'LastSSN', width: 100 }, { name: 'Department', index: 'Department', width: 80, align: "right" }, { name: 'Age', index: 'Salary', width: 80, align: "right" }, { name: 'Salary', index: 'Salary', width: 80, align: "right" }, { name: 'Address', index: 'Address', width: 150, sortable: false }, { name: 'MaritalStatus', index: 'MaritalStatus', width: 100, sortable: false } ], rowNum: 10, sortname: 'id', viewrecords: true, sortorder: "desc", caption: "List Employee Details" }); </script>
所以在这种情况下,我手动编写列名,例如“FirstName”、“LastName”等,而不是依赖 html 模板化帮助程序,例如 Html.DisplayFor(modelitem=>modelitem.FirstName)。所以我将失去拥有强类型视图的好处。生成的字段名称及其值也不会基于数据注释中定义的内容,例如 [DisplayName("First Name")] 。那么这是否意味着如果我使用 jqGrid 或其他 web 网格,我将失去任何数据注释(如 DisplayName)的效果,因为我将在每个视图上手动编写字段名称?。
我读到的所有关于 jqGrid 的例子都将 json 传递给了网格。那么 jqGrid 是否接受从操作方法传递给视图的模型对象,或者它仅适用于 json ?
现在,当我在 jqGrid 中创建新项目时,我将在 jquery 对话框中而不是在普通视图中执行此操作。所以这意味着我在模型类中定义的用于验证的数据注释[必需]、[长度] 在 jquery 对话框中不会有任何影响,这是正确的吗?因为根据我目前对 jquery 对话框的经验,他们将忽略 Model 类中定义的 DataAnnotation,而且如果我在 asp.net mvc 提供的 ModelState 中添加错误,那么如果发生异常,我将无法在对话框中显示 modelstate 错误在 Post Create 操作方法中,?
在使用带有 asp.net mvc 的 web 网格时,任何人都可以就这些点以及它们是否有效提供建议?
【问题讨论】:
标签: jquery asp.net-mvc asp.net-mvc-4 razor jqgrid