2012-11-30 169 views
1

我試圖做一個應用程序請求控制器上的操作並收到更新後的信息模型。步驟很簡單,部分視圖不渲染模型更新ajax後調用

  1. 填寫窗體上的一些信息。
  2. 點擊某個按鈕,在控制器上調用一個動作。
  3. 該操作更新接收到的模型並使用PartialView方法將其發回。

但是,模型不更新!

代碼:

<div id="div-dialog"> // THIS IS A DIALOG JQUERYUI 
     <div id="div_toolbar" class="ui-widget-header ui-corner-all"> //THIS IS A TOOLBAR JQUERYUI 
      <div style="margin-right: auto; margin-left: auto; width: 420px"> 
       <button id="btn_novo">Novo</button> 
       <button id="btn_gravar">Gravar</button> 
       <button id="btn_limpar">Limpar</button> 
       <button id="btn_excluir">Excluir</button> 
      </div> 
     </div> 
    </div> 
    <div id="partial-render"> //HERE GOES THE PARTIAL VIEW 
     @Html.Partial("AvaliationPeriodPartial") 
    </div>  

<script type="text/javascript"> 
    $(function() { 
     $('#div-dialog').dialog({ 
      height: 'auto', 
      width: 600 
     }); 

     $('#btn_novo').button({ icons: { primary: "ui-icon-document"} }).button('enable').click(function() { 

      /* ON THIS FUNCTION I SERIALIZE THE INPUTS TO SEND IT TO THE ACTION ON CONTROLLER 
       TO UPDATE THE INFORMATION */ 

      var formData = $('input').serialize(); 

      $('input[disabled]').each(function() { 
       formData = formData + '&' + $(this).attr('name') + '=' + $(this).val(); 
      }); 

      //HERE THE AJAX CALL 
      $.post('@Url.Action("teste", "Import")', formData, function (html) { 
       $('#partial-render').html(html); 
      }, 'html'); 
    }); 
</script> 

這裏是_layout頁面代碼:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>Bem-vindo | @ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <link href="@Url.Content("~/Content/themes/redmond/jquery-ui-1.9.1.custom.min.css")" rel="stylesheet" type="text/css" />  
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.8.3.min.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.9.2.custom.min.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftAjax.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")"></script> 
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script> 
</head> 

<body> 
    @RenderBody() 
</body> 
</html> 

這裏是PartialView代碼:

@model GdaeMVC4.Models.ScreenModels.AvaliationPeriod 
@Html.LabelFor(m => m.IdAvaliation) 
@Html.TextBoxFor(m => m.IdAvaliation) 
@Html.TextBoxFor(m => m.Description) 
+0

您還需要發佈控制器操作。 – Heather

+0

你有沒有檢查過你的ajax調用返回200(ok)狀態代碼或其他類似於500或404的東西。你可以用螢火蟲或小提琴 –

+0

返回狀態200 ... –

回答

1

把休息在你的JavaScript代碼(例如螢火蟲),並確認您的formdata確實按照您的預期發送。

如果formData看起來是正確的,請在您的控制器操作中暫停並確認模型構建器已正確將formdata轉換爲模型。

獎勵瑣事:默認模型構建器不會將布爾變量的「1」轉換爲「true」,也許這就是您的問題?

+0

我知道所有調試測試和所有調試沒問題,FormData是按預期發送/接收的,我更新了操作的描述,之前調用RenderPartial方法的更新描述是正確的(更新),在視圖渲染上,Model與更新後的描述屏幕上沒有任何反應!我退出了我的模型簽名的複雜對象,只是「公共ActionResult teste()」,如果我發送一個新的模型填充行動方法PartialView方法更新屏幕O​​.o –

+0

問題已解決! http://stackoverflow.com/questions/13464407/model-change-in-post-action-not-visible-in-html-textboxfor?rq=1 –