我正在尝试将对象从cshtml视图传递给JQuery,cshtml代码:
foreach (var item in Model)
{
<tr class="link" data-graduate="@item" data-url="@Url.Action("PopulateModal","CMIPGraduate")">
<td>@Html.DisplayFor(display => item.State)</td>
<td>@Html.DisplayFor(display => item.Name)</td>
</tr>
}
JQuery代码:
$(document).ready(function () {
$(".link").click(function () {
alert($(".link").data("graduate"))
$.ajax({
type: "get",
url: $(".link").data("url"),
data:{graduate:$(".link").data("graduate")}
})
$("#myModal").modal("show");
})
})
当对象到达Controller时,该对象始终为null,我试图在我的alert
代码中使用JQuery
显示它,但我得到的就是这样:{ {1}},我一直在尝试使用MyProject.Viewmodels.MyClassVM
,但我得到的结果相同。我知道在我的cshtml视图中我可以这样做:
alert(JSON.stringify($(".link").data("graduate")))
我将在我的 <tr class="link" data-graduate="@item.Name" data-url="@Url.Action("PopulateModal","CMIPGraduate")">
函数中轻松获取该名称,但我不想在我的cshtml视图中按字段创建JQuery
属性,如果我有500个fielsd怎么办?我宁愿得到整个对象并将其发送给我的控制器动作。
以防这是我的控制器操作:
data-
答案 0 :(得分:1)
嗯,这很有帮助:ASP.NET MVC: How to convert View Model into Json object
但真正做到的是在我的视图中修改此代码(添加@Json.Encode(item)
):
<tr class="link" data-graduate="@Json.Encode(item)" data-url="@Url.Action("PopulateModal","CMIPGraduate")">