BootstrapTable+KnockoutJS相结合实现增删改查解决方案(三)两
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来。最近项目打算正式将ko用起来,于是乎对ko和bootstraptable做了一些封装,在此分享出来供园友们参考。封装思路参考博客园大神萧秦,如果园友们有更好的方法,欢迎讨论。 KnockoutJS系列文章:
一、第一个viewmodel搞定查询demo的实现还是延续上次的部门管理功能。以下展开通过数据流向来说明。 1、后台向View返回viewmodel的实现代码释疑:这里返回的model包含三个选项 •tableParams:页面表格初始化参数。由于js里面定义了默认参数,所以这里设置的参数是页面特定的初始化参数。 •urls:包含增删改请求的url路径。 •queryCondition:页面的查询条件。 2、cshtml页面代码Index.cshtml页面代码如下: 二、第二个viewmodel搞定编辑上面的一个viewmodel搞定了查询和删除的功能,但是新增和编辑还需要另一个viewmodel的支持。下面来看看编辑的封装实现。 1、ActionResult的实现通过上面查询的代码我们可以知道,当用户点击新增和编辑的时候,会请求另一个View视图→/Department/Edit。下面来看看Edit视图的实现 代码释疑:上述代码很简单,就是向视图页面返回一个viewmodel,包含编辑的实体和提交的url。通过这个实体主键是否存在来判断当前提交是新增实体还是编辑实体。 2、cshtml代码Edit.cshtml代码如下: 那么就会在提交的时候自动进行验证: 注意:验证属性Name对应的是input标签的name属性,所以要做验证,这个name属性必须设置正确。 最好附上增删改的后台方法: oData)
{
DepartmentModel.Delete(oData);
return Json(new { },JsonRequestBehavior.AllowGet);
}
至此,我们整个页面的增删改查效果就OK了,简单看下效果: 三、总结以上简单封装了bootstrapTable+ko的增删改查业务,只是一个最初级的封装。如果你需要将这些运用都你的项目中,可能还需要一些简单的优化措施,比如: 1、如果单纯是一个页面的viewmodel,是否可以不用从后台的ActionResult里面返回,直接写在View页面里面感觉更好,省去了序列化和参数传递的问题。这点有待优化。 2、公共js里面不应该出现页面元素的id,可以通过参数将页面元素传递进来。 3、新增和编辑事件方法里面弹出框的部分有很多重复代码,这部分的最好做法是将弹出框封装成一个单独的组件去调用,可以减少大部分的js代码。 4、如果查询条件以及编辑的属性里面存在select下拉框元素,可能还需要封装下拉框的datasourse等属性,这一部分是非常常见的,等博主整理好demo后将这块加进去。 以上所述是小编给大家介绍的BootstrapTable+KnockoutJS相结合实现增删改查解决方案(三)两个Viewmodel搞定增删改查 。编程之家 52php.cn 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |