asp.NetMVCフロントViewページバックグラウンドControllerコントローラにデータを渡すいくつかの方法

9662 ワード

前の記事Net MVCの@modelとModelでは、バックグラウンドコントローラがフロントページにデータを転送する方法について説明しています.今日は、フロントViewページからバックグラウンドコントローラにデータを転送する方法について説明します.このいくつかの方法は私が実際に使ってまとめたもので、もしその場所の言うことが間違っているか、不足しているところがあれば、皆さんが建設的な意見を指摘し、共同で勉強することを歓迎します.
1、非同期方式
実際のプロジェクト開発では、現在のページをコミットしないときに重要な情報を取得するために、非同期でデータをコミットする必要があります.これにより、ネットワークリソースを無駄にしたり、サーバ負荷をかけたりすることはありません.非同期方式は主にajax、post、getの3種類があります
(1)ajax方式
/*          */
        $(function () {
            $.ajax({
                type: "post",
                url: "/MonthWin/Index/12",
                data:{"name":name,"sex":sex},
                dataType: 'JSON',
                success: function (result) {
                    if (result == true) {
                        isLogin = true;
                    }
                    else {
                        isLogin = false;
                    }
                }
            });
        })

(2)post方式
        $.post(url, { "username": username, "province": province, "city": city, "branch": branch, "number": number, "bankName": bankName },
                       function (result) {
                           if (result == "1") {
                               alert("    ");
                               location.reload();
                           }
                           else {
                               alert("    ");
                               location.reload();
                           }
                       });

まとめ:非同期方式も実現が簡単で、もちろんこれは一方的です.その最も重要な点は、値を返すことです.バックグラウンドから転送された値に基づいて次の操作を行うとともに、サーバリクエストを1回削減し、ネットワーク負荷を低減できます.
2、フォーム方式
(1)post方式
<1>jsを通さずに直接提出するpost方式

<2>jsコミットを用いたpost方式
   /*     */
   function updateBank() {
       var username = $.trim($("#username").val());
       var branch = $.trim($("#branch").val());
       var number = $.trim($("#changbankno").val());
       var check = /^(\d{19})$/;
       var bankName = $("#addBankCode").find("option:selected").text();
       if (username == "" || username == null) {
           alert("      ");
       }
       else if (branch == "" || branch == null) {
           alert("       ");
       }
       else if (number == "" || number == null) {
           alert("       ");
       }
       else if (!check.test(number)) {
           alert("           ");
       }
       else if (bankName == "     ") {
           alert("     ");
       }
       else {
           $("#Updatebank").submit();
       }
   } 

上記の2つのformフォームのコミット方式は、簡単にバックグラウンドにデータをコミットすることしかできません.データのコミット後のサーバの戻り値については、表示されません.対応する結果を得るためには、バックグラウンドにコードを追加する必要があります.これはここではもう疲れていない.
まとめ:上記のコードからpost伝値方式で伝達できるデータ量はほとんど制限されていないことがわかります.大量の伝値が必要な場合、post方式は良い選択です.
           
 
   
  

(2)get方式

表单提交的get方式也可以称为QueryString方式,就是简单的把要传递的数据放在Url之后。

总结:不过get方式相比post的方式有很多不足:传递数据量有限制、不安全

当然在MVC中我们还可以通过HTML帮助器实现表单提交,在此不在累述,具体请参考:MVC学习系列-HTML帮助器的使用

3、异步表单方式

 
     
     
 
     
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            //  myform  ajaxForm      ,            。
            $('#myForm').ajaxForm(function() { 
                alert("Thank you for your comment!"); 
            }); 
        }); 
     
まとめ:この方式は前の2つの方式の組み合わせて使用して、もちろん両者の長所を結びつけて、比較的に便利です
4、Modelデータストレージモデル方式
MVCのModelはControllerとViewの架け橋として、もちろんViewとControllerの間でデータを渡すこともできます.この方式の実現は主に以下の3つのステップに分けられる.
(1)Modelエンティティの定義
public class Model
    {
        public string rtoNumber { set; get; }
        public string approver { set; get; }
        public string modifier { set; get; }
        public string comment { set; get; }
    }

(2)Htmlタグの定義