将对象从cshtml视图传递到JQuery

时间:2017-03-09 15:46:03

标签: javascript jquery asp.net-mvc razor

我正在尝试将对象从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-

1 个答案:

答案 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")">