2017-03-01 69 views
-1

是否有可能通過我的視圖模型控制器,使用Ajax,沒有'重建'的對象?asp.net MVC - AJAX模型到控制器

我有我的觀點:

@using Project.Models 
@model InfoFormulaireEnqueteModele 


@section Style{ 
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />} 


@section Scripts{ 
@Scripts.Render("~/bundles/autocomplete") 
@Scripts.Render("~/bundles/timeentry") 

<script type="text/javascript"> 
    var $status = $('#status'), 
     $commentBox = $('#commentBox'), 
     timeoutId; 
    var model = @Model; //<- something's wrong here 

    $commentBox.keypress(function() { 
    $status.attr('class', 'pending').text('changes pending'); 

    // If a timer was already started, clear it. 
    if (timeoutId) clearTimeout(timeoutId); 

    var r = ''; 
    // Set timer that will save comment when it fires. 
    timeoutId = setTimeout(function() { 
     var test = $('#commentBox').val(); 
     // Make ajax call to save data. 
     $.ajax({ 
      type: "POST", 
      data: JSON.stringify(model), 
      url: '/Enquete/IndexPartial/', 
      contentType: "application/json" 
     }).done(function (res) { 
      $("#SomeDivToShowTheResult").html(res); 
     }); 
     $status.attr('class', 'saved').text('changes saved'); 
    }, 1000); 
    return r; 
}); 

</script> 

控制器:

[HttpPost] 
    public PartialViewResult IndexPartial(InfoFormulaireEnqueteModele m) 
    { 
     return PartialView("_IndexPartial", m); 
    } 

我能達到我的控制器,但我的模型(M)的控制器只有空值一次。該值被髮送到視圖之前在控制器中設置。

+0

當你發送給控制器時,ru設置值。你需要設置值,然後使用回送。請注意你使用post,所以你需要發送json值。 ig你打印模型,它會是空的,如果我沒有錯。 –

+0

你能告訴在控制檯中打印這個JSON.stringify(model) –

+0

你在這裏試圖做什麼?你爲什麼想要將原來不變的模型傳回服務器? –

回答

0

在你的操作方法speciy [FromBody]如下

[HttpPost] 
public PartialViewResult IndexPartial([FromBody] InfoFormulaireEnqueteModele m) 
{ 
    return PartialView("_IndexPartial", m); 
} 
0

你應該做的是這樣的:

var model = @Html.Raw(Json.Encode(@Model)); 

這就是你如何轉換你的模型JSON和它傳遞給js的

相關問題