フォームを作成すると、そのフィールドのほとんどは編集できません。これらのフィールドの一部のみを編集できます。この記事では、Asp.Net MVC4 で ID を使用してフォームのコンテンツを更新するアイデアについて詳しく説明します。必要な友人はそれを参照してください。ユーザーの要求は次のとおりです。フォームが作成されると、ほとんどのフィールドは編集できません。これらのフィールドの一部のみを編集できます。
編集不可は、入力ボックスに無効属性を設定することで実現されます。このとき、null にできない一部のフィールドは取得できないため、データベースの送信フォームのコンテンツに直接エラーが報告されます。データベースへの更新が無効になっているため、フロントエンドで。
次の 2 つのアイデアがあります: 1. 非表示のフォームを作成して、無効になっているコントロールごとに非表示のコントロールを作成します。ただし、問題は、ワークロードが大きすぎることです (フォームに 1000 の属性がある場合、ご存知のように)
2. データベース内のフォームの ID を取得し、ID と編集可能なフィールドをバックグラウンドに渡します。まず、オブジェクトとその属性データが ID によってデータベースから検索され、編集可能なフィールドがオブジェクトに割り当てられます。処理が完了すると、オブジェクトのデータがデータベースに更新されます。
要約すると、2 番目の考え方を使用すると、より賢明に見える可能性があります。
具体的な手順は次のとおりです: (具体的な手順を詳しく読む必要はありません。プロジェクトから抽出したものであり、私自身のレビューにのみ適しています)
1. OutsourcingModule.cs でルートを作成します。 a アクセスパス:
routes.MapRoute( "OutSourcingWorkSheet",//路由名 "outsourcing/saveWorkSheet",//url路径 new {controller = "Outsourcing", action = "SaveWorkSheet"}//映射的控制器以及对应的Action方法名 );
/// <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为内部项目
$('#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("提交失败,请稍后再试"); } } }); } });
2 番目のコードのパラメーター リストでは、最初に文字列 workSheets を WorkSheets として書きました。このとき、Alt+Enter を押すと、テキストの下に青い波線が表示されました。システムは、名前を workSheets に変更するよう求めたので、Enter キーを押して確定しました。その後、ワークシート フィールドをデータベースに保存したり、データベースから読み取ることができなくなります。同僚の助けを借りて長時間検索した結果、大文字を小文字に変更するプロセス中に、dbml ファイル内のフィールドも小文字に変更され、データベースと一致できなくなることが判明しました。
この関数を実行中に学んだ知識:
入力の ID が apple の場合、次のように取得できます。これは私がすでに知っていたことです:
var apple = $("#apple").val();
var apple = $("input[name=apple]").val();
$("#fruit").find("input:not(input[name=apple]),textarea,select").attr("disabled", true); //从id为fruit的父元素里面寻找所有的input、textarea和select控件以及其值,但是除去name为apple的控件
$.ajax({ type:"post",//可以选择post或者method url:"",//url接口 data:{ //参数列表 }, success:function(data){ //如果访问url成功,data就是该url接口自动返回的数据 } })
まとめ
以上がAsp.Net MVC4 が ID を介してフォーム コンテンツの更新を実装する方法の分析例を共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。