ホームページ > バックエンド開発 > C#.Net チュートリアル > Asp.Net MVC4 が ID を介してフォーム コンテンツの更新を実装する方法の分析例を共有します。

Asp.Net MVC4 が ID を介してフォーム コンテンツの更新を実装する方法の分析例を共有します。

黄舟
リリース: 2017-07-18 10:36:37
オリジナル
1329 人が閲覧しました

フォームを作成すると、そのフィールドのほとんどは編集できません。これらのフィールドの一部のみを編集できます。この記事では、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方法名
);
ログイン後にコピー

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スクリプトコード


$(&#39;#btn_saveWorkSheet&#39;).on(&#39;click&#39;, 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();
ログイン後にコピー

入力の名前が の場合。 apple の場合、次のように取得できます。これが私が学んだことです:

var apple = $("input[name=apple]").val();
ログイン後にコピー

また、多くの入力から特定の名前を削除すると、私が学んだことはもう 1 つあります:

$("#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 を介してフォーム コンテンツの更新を実装する方法の分析例を共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート