2017-08-31 29 views
3

我想要做的是創建一個可以從所有不同視圖使用的gui對象。這個想法是通過將組件放入佔位符div來將組件作爲主視圖的局部視圖添加。MVC 6使用ajax將模型從視圖傳遞到控制器到局部視圖

這裏是我的模型

public class Client 
    { 
     public int clientid { get; set; } 
     public string clientname { get; set; } 
    } 

,我使用插入組件的Java腳本... 理想我寧願通過直接調用只需使用傳遞給該視圖的模型數據它,但不工作這就是爲什麼我一直在用下面的VAR模型的故障排除......

var model = { 
    clientid: 23, 
    clientname: "This one" 
}; 
$.ajax({ 
    type: "POST", 
    data: JSON.stringify(model), 
    url: "../shared/ClientProgramSelector", 
    contentType: "application/json" 
}).done(function(result) { 
    $("#clientProgramSelectorPlaceholder").html(result); 
}); 

所調用的控制器是這裏

[HttpPost] 
public PartialViewResult ClientProgramSelector([FromBody] Client passingData) 
{ 
    return PartialView("ClientProgramSelector", passingData); 
} 

最後,這裏是div我試圖將該組件放置到進

<div id="#clientProgramSelectorPlaceholder"></div> 

的代碼顯示沒有錯誤,但沒有被顯示在網頁上。有沒有人看到我在做什麼錯了?另外,有沒有辦法只使用傳遞的模型,而不必重新創建數據?

在此先感謝

+0

嘗試用'success'替換'done'並在AJAX調用中放入'error'函數。 –

+0

ajax調用是否成功?它返回200 OK嗎?或404,如果它是404,你應該修復你的網址 – Shyju

+0

該電話是成功的,我只是id錯了。那是一個愚蠢的錯誤。但是,仍然想知道是否可以直接在ajax調用中傳遞viewmodel,謝謝。 –

回答

2

你阿賈克斯成功處理程序試圖將結果設置爲$("#clientProgramSelectorPlaceholder")返回的jQuery的元素。這將返回Id值爲「clientProgramSelectorPlaceholder」的元素。但是你的HTML,你沒有!你有什麼是與Id "#clientProgramSelectorPlaceholder"

你的div id應該沒有#,它應該工作,只要你的ajax調用返回200 OK響應。

<div id="clientProgramSelectorPlaceholder"></div> 

如果你想渲染傳遞給主視圖模態數據中的局部視圖,你可以調用Html.Partial方法,假設你的主要觀點還強類型相同的視圖模型(Client)對象

@model Client 

<div id="clientProgramSelectorPlaceholder"> 
    @Html.Partial("ClientProgramSelector",Model) 
</div> 

如果您想將原始模型作爲ajax發佈數據傳遞,可以在您的javascript代碼塊中使用JsonConvert.SerializeObject方法。

var model = @Html.Raw(JsonConvert.SerializeObject(Model)); 
$.ajax({ 
    type: "POST", 
    data: JSON.stringify(model), 
    url: "@Url.Action("ClientProgramSelector","YourControllerNameHere")", 
    contentType: "application/json" 
}).done(function(result) { 
    $("#clientProgramSelectorPlaceholder").html(result); 
}); 
+0

謝謝。是的,只是注意到我在查看代碼時。現在,有沒有辦法將原先的模型傳遞給前一個控制器的視圖? –

+0

你的意思是模態傳遞給你有div的主視圖? – Shyju

+0

希望通過ajax在視圖中傳遞模型。 –

相關問題