麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

Asp.Net MVC4通過id更新表單內容的思路詳解

2024-07-10 13:32:34
字體:
來源:轉載
供稿:網友

用戶需求是:一個表單一旦創建完,其中大部分的字段便不可再編輯。只能編輯其中部分字段。

而不可編輯是通過對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更新表單內容的思路詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久久久久久久久 | 青草av.久久免费一区 | a黄在线观看 | 久久国产亚洲视频 | 快播av在线 | 一本色道久久综合亚洲精品图片 | 天天干天天碰 | 欧洲色阁中文字幕 | 欧美成人精品一区二区男人小说 | 久久艹综合 | 国产成人精品区 | 干色视频 | 成人男男视频拍拍拍在线观看 | 日本免费一区二区三区四区 | 国产99免费| 国产成人精品一区在线播放 | 男女羞羞视频在线免费观看 | 91久久久久久久一区二区 | 亚洲国产成人一区 | 欧美精品一区二区三区在线 | 日产精品久久久一区二区开放时间 | 欧美日韩亚洲成人 | 久久精品视频69 | 天天色综合2 | 九一免费版在线观看 | 精国产品一区二区三区 | 欧美精品一区二区久久 | 欧美成人自拍 | 99精品国产一区二区三区 | 欧美 日韩 国产 成人 | 在线a| 成年免费视频黄网站在线观看 | 中文字幕在线免费看 | 色妞视频男女视频 | 成人视屏在线 | 国产一精品久久99无吗一高潮 | 亚洲骚图 | 广州毛片 | 一级成人在线 | 久久久www成人免费精品 | 欧美日韩激情 |