[英]MVC 6 passing a model from view to controller to partial view using ajax
我想要做的是創建一個可以在所有不同視圖中使用的gui對象。 我們的想法是通過將組件放入占位符div來將組件添加為主視圖的局部視圖。
這是我的模特
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>
代碼顯示沒有錯誤,但頁面上沒有任何內容呈現。 有誰看到我做錯了什么? 另外,有沒有辦法只使用傳遞的模型而不必重新創建數據?
提前致謝
您的ajax成功處理程序正在嘗試將結果設置為$("#clientProgramSelectorPlaceholder")
返回的jQuery元素。 這將返回Id值為“clientProgramSelectorPlaceholder”的元素。 但是你的HTML,你沒有! 你擁有的是一個帶有"#clientProgramSelectorPlaceholder"
的元素
你的div id應該沒有#
,只要你的ajax調用返回200 OK響應它就應該工作。
<div id="clientProgramSelectorPlaceholder"></div>
如果要使用傳遞給主視圖的模態數據渲染局部視圖,可以調用Html.Partial
方法,假設您的主視圖也強類型為同一視圖模型( Client
)對象
@model Client
<div id="clientProgramSelectorPlaceholder">
@Html.Partial("ClientProgramSelector",Model)
</div>
如果要將原始模型作為ajax post數據傳遞,可以在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);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.