Asp。净MVC4实现通过id更新表单内容的方法是什么

  介绍

这篇文章给大家分享的是有关Asp。净MVC4实现通过id更新表单内容的方法是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

用户需求的是:一个表单一旦创建完,其中大部分的字段便不可再编辑。只能编辑其中部分字段。

而不可编辑是通过对输入输入框设置禁用属性实现的,那么这时候直接向数据库中提交表单中的内容就会报错,因为有些不能为零的字段由于残疾人属性根本无法在前端被获取而后更新至数据库。

1。通过创建隐藏表单,为每一个残疾人控件分别创建一个隐藏控件,但是这样的问题是工作量太大(如果表单有一千个属性,你懂的)

2。通过获取该表单在数据库中的id,把该id和可以编辑的字段传递到后台。首先通过id将对象及其属性数据从数据库中搜索出来,然后将可以编辑的字段赋值给该对象。处理完毕后,再将该对象的数据更新至数据库。

综上所述,用第二种思路能显得更加睿智。

下面是具体的操作步骤:(具体步骤就不用细看了,这是我从项目中抽出来的,只适合我自己回顾)

1。在OutsourcingModule。cs中创建路由,以此创建一个访问路径:

routes.MapRoute (   “OutSourcingWorkSheet",//路由名   “外包/saveWorkSheet"//url路径   新的{控制器=癘utsourcing", action=癝aveWorkSheet"}//映射的控制器以及对应的行动方法名   );

2。

///& lt; summary>///保存工作票///ModelBinder会将前端传递过来的id在数据库中搜索出字段并且转换为外包对象///此时的外包对象中的工作表属性不是前端传递过来的值,而是数据库中的//////方法中有两个参数,外包上面已经解释,工作表是前端传递过来的第二个参数///& lt;/summary>///& lt;参数name=皁utsourcing"祝辞& lt;/param>///& lt;参数name=皐orkSheets"祝辞& lt;/param>///& lt; returns> & lt;/returns>
  (HttpPost)
  [ActionName (“SaveWorkSheet"))
  [AccessRestriction (“SaveWorkSheet"))
  公共JsonResult SaveWorkSheet(外包外包、字符串工作表)
  {
  如果(外包!=null)
  {
  外包。工作表=工作表;
  _outsourcingService.Save(外包);
  返回Json(新ABResponse (HttpStatusCode.OK));
  }
  返回Json(新ABResponse (HttpStatusCode.BadRequest));
  }//AB为内部项目

3。前端js脚本代码

美元(& # 39;# btn_saveWorkSheet& # 39;)。(& # 39;点击# 39;函数(){   如果($(“输入[name=工作表]“).val ()==啊? {   bootbox.alert(“不能为空“);   其他}{   . ajax({美元   类型:“post",   url:“/外包/saveWorkSheet"   数据:{   ID: $ (“# outsourcing_id") .val (),   工作表:$(“输入[name=工作表]“).val ()   },   数据类型:“json"   成功:功能(数据){   如果(数据)。代码==200){   bootbox.alert(“修改成功,即将刷新“);   setTimeout(函数(){   位置.重新加载():   },1000);   其他}{   bootbox.alert(“提交失败,请稍后再试“);   }   }   });   }   });

其实思路很简单,但是我特么做了大半天——;其中还遇到了一个大的坑:

在第二段代码的参数列表中,我一开始把字符串工作表写成了工作表。这时文字下出现了蓝色的波浪线,Alt + Enter后系统提示重命名工作表时,我便直接回车确定了。然后,工作表字段便再也无法保存,也不能从数据库中读取。在同事帮忙找了N久之后发现,原来是当时大写改小写的过程中同时将dbml文件中的字段也改成了小写导致了无法和数据库匹配。

做这个功能的时候顺便学到的一点知识:

如果一个输入的id为苹果,那么可以这么获取,这是我本来就知道的:

苹果=$ var (“# apple") .val (); 

如果一个输入的名称为苹果,那么可以这么获取,这是我刚知道的:

苹果=$ var(“输入[name=苹果]“).val ();

还有一个刚知道的,如果从很多输入中去除某个名称:

美元(“# fruit");(“输入:没有(输入[name=苹果]),文本区域,选择”).attr (“disabled",真实);//从id为水果的父元素里面寻找所有的输入,文本区域和选择控件以及其值,但是除去名字为苹果的控件

另外总结下ajax的方式,很久不用都快忘了:

. ajax({美元   类型:“post",//可以选择职位或者的方法   url:““,//url接口   数据:{//参数列表   },   成功:功能(数据){//如果访问url成功,数据就是该url接口自动返回的数据   }   })

Asp。净MVC4实现通过id更新表单内容的方法是什么