1

私は Visual Studio 2010 と ASP.NET MVC4 ビュー エンジン カミソリを使用しています。

ビューからコントローラーに 2 つのパラメーター (オブジェクト、文字列) を渡すのが好きです。ビューでは、私はこれを持っています:

var persona = {};
        function ModeloPersona() {
            persona.CI = $('#CI').val();
            persona.Nombre = $('#Nombre').val();
            persona.Apellidop = $('#Apellidop').val();
            persona.Apellidom = $('#Apellidom').val();
            persona.Direccion = $('#Direccion').val();
            persona.Sexo = $('#Sexo').val();
            persona.Cumple = $('#Cumple').val();
        }

        function Grabar(modo) {
            ModeloPersona();
            $.ajax({
                url: '@Url.Action("Grabar", "Home")',
                type: 'POST',
                data: { 
                   Persona: JSON.stringify(persona),
                   Modo: modo 
                },
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function () {

                }
            });
        }

そして私のコントローラーはこれを持っています:

public ActionResult Grabar(Persona mPersona, string modo){
   if (ModelState.IsValid){
     if (modo == "2"){

     }
     else{

     }
   }
   return View();
}

問題は次のとおりです。オブジェクトmPersonaは null ですが、modoの値は正しいです。

mPersona が null である理由 何が問題なのですか、これで私を助けてください

よろしくリカルド

4

2 に答える 2

1

postajaxを使用して送信しているパラメータを確認してください

data: { 
        Persona: JSON.stringify(persona),
        Modo: modo 
      }

MVC の既定のモデル バインディングは、パラメーター名に基づく規則に従います。既定のモデル バインダーを機能させるには、同一の送信パラメーターと受信パラメーターを指定する必要があります。この場合、受信パラメーターは次のようになりますActionResult

public ActionResult Grabar(Persona Persona, string Modo){...}
于 2012-11-19T06:17:21.307 に答える
0

パラメータの名前をに変更すると、機能するpersonaはずです。

public ActionResult Grabar(Persona persona, string modo){

アクションメソッドのパラメーターの名前は、モデルバインディングが機能するために、JSONデータ内のオブジェクトの名前と一致する必要があります。

于 2012-11-19T05:50:05.743 に答える