2012-11-19 62 views
1

我正在使用Visual Studio 2010和ASP.NET MVC4視圖引擎剃鬚刀。將兩個參數從視圖傳遞到控制器

我喜歡從視圖傳遞兩個參數(對象,字符串)到控制器。 在視圖中,我有這個:

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爲空但值modo是正確的。

爲什麼mPersona爲空?是什麼問題,請幫我這個

問候 裏卡多

+0

出於興趣哪些呢* *摩多等於* 2 *代表什麼?也許你可以通過兩個*操作*,每個* modo *一個更明確... ... –

回答

0

參數的名稱更改爲persona應該工作:

public ActionResult Grabar(Persona persona, string modo){ 

參數的名稱操作方法有匹配JSON數據中的對象的名稱以使模型綁定起作用。

+0

謝謝!這項工作 – raranibar

1

看到post PARAMS您正在使用AJAX

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

MVC的默認模型綁定遵循基於參數名稱,如果你想默認模型綁定工作,你需要指定公約相同發送和你的情況接收參數在ActionResult接收PARAMS應該像

public ActionResult Grabar(Persona Persona, string Modo){...} 
+0

感謝您的合作,也許工作 – raranibar

相關問題