首页后端开发ASP.NET分享Asp.Net MVC4如何实现通过id更新表单内容的实例分析

分享Asp.Net MVC4如何实现通过id更新表单内容的实例分析

时间2024-01-30 12:57:03发布访客分类ASP.NET浏览501
导读:收集整理的这篇文章主要介绍了分享Asp.Net MVC4如何实现通过id更新表单内容的实例分析,觉得挺不错的,现在分享给大家,也给大家做个参考。一个表单一旦创建完,其中大部分的字段便不可再编辑。只能编辑其中部分字段。下面通过本文给大家分享A...
收集整理的这篇文章主要介绍了分享Asp.Net MVC4如何实现通过id更新表单内容的实例分析,觉得挺不错的,现在分享给大家,也给大家做个参考。一个表单一旦创建完,其中大部分的字段便不可再编辑。只能编辑其中部分字段。下面通过本文给大家分享Asp.Net MVC4通过id更新表单内容的思路详解,需要的朋友参考下吧

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

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

有下面两种思路:

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

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

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

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

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


routes.MaPRoute(  "OutSourcingWorkSheet",//路由名  "outsourcing/saveWorkSheet",//url路径  new {
controller = "Outsourcing", action = "SaveWorkSheet"}
    //映射的控制器以及对应的Action方法名);
    

2.


/// summary>
    /// 保存工作票/// ModelBinder会将前端传递过来的id在数据库中搜索出字段并且转换为outsourcing对象/// 此时的outsourcing对象中的workSheets属性不是前端传递过来的值,而是数据库中的/// /// 方法中有两个参数,outsourcing上面已经解释,workSheets是前端传递过来的第二个参数/// /summary>
    /// param name="outsourcing">
    /param>
    /// param name="workSheets">
    /param>
    /// returns>
    /returns>
[HttpPost][ActionName("SaveWorkSheet")][AccessRestriction("SaveWorkSheet")]public JsonResult SaveWorkSheet(Outsourcing outsourcing,string workSheets){
  if (outsourcing!=null)  {
        outsourcing.WorkSheets = workSheets;
        _outsourcingService.Save(outsourcing);
        return Json(new Abresponse(HttpstatusCode.OK));
  }
      return Json(new ABResponse(HttpStatusCode.BadRequest));
}
    //AB为内部项目

3.前端js脚本代码


$('#BTn_saveWorkSheet').on('click', function () {
  if ($("input[name=workSheets]").val() == "") {
        bootbox.alert("不能为空");
  }
 else {
    $.ajax({
      tyPE: "post",      url: "/outsourcing/saveWorkSheet",      data: {
        ID: $("#outsourcing_id").val(),        WorkSheets: $("input[name=workSheets]").val()      }
,      dataType: "json",      success: function (data) {
        if (data.Code == 200) {
              bootbox.alert("修改成功,即将刷新");
          setTimeout(function () {
                location.reload();
          }
    , 1000);
        }
 else {
              bootbox.alert("提交失败,请稍后再试");
        }
      }
    }
    );
  }
}
    );
    

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

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

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

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


VAR apple = $("#apple").val();
    

如果一个input的name为apple,那么可以这么获取,这是我刚知道的:


var apple = $("input[name=apple]").val();
    

还有一个刚知道的,如果从很多input中去除某个name:


$("#fruit").find("input:not(input[name=apple]),textarea,select").attr("disabled", true);
    //从id为fruit的父元素里面寻找所有的input、textarea和select控件以及其值,但是除去name为apple的控件

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


$.ajax({
  type:"post",//可以选择post或者method  url:"",//url接口  data:{
    //参数列表  }
,  success:function(data){
    //如果访问url成功,data就是该url接口自动返回的数据  }
}
    )

总结

以上就是分享Asp.Net MVC4如何实现通过id更新表单内容的实例分析的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: .NET下关于log4net的使用方法的图...下一篇:关于C#如何实现Access以时间段查...猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 分享Asp.Net MVC4如何实现通过id更新表单内容的实例分析
本文地址: https://pptw.com/jishu/592549.html
.NET下关于log4net的使用方法的图文代码分享 如何使用C#自定义音乐播放器进度条的实例分析

游客 回复需填写必要信息