Javascript 如何将ViewModel从MVC Html传递到Jquery?

Javascript 如何将ViewModel从MVC Html传递到Jquery?,javascript,jquery,asp.net-mvc,razor,Javascript,Jquery,Asp.net Mvc,Razor,我有一个cshtml文件,该文件用于来自控制器的模型值的每个循环。我的cshtml代码如下:- <tbody> @foreach (var item model.TechnicianInvoice) { <tr>

我有一个cshtml文件,该文件用于来自控制器的模型值的每个循环。我的cshtml代码如下:-


<tbody>
                                @foreach (var item model.TechnicianInvoice)
                                {
                                    <tr>
                                        <td>@item.Name</td>
                                        @foreach (var rate in item.Rates)
                                        {
                                            <td class="td10"><span class="prefix">$</span><input  type="text" class="form-control my-input" value="@rate.Rate.ToString("0.00")"></td>
                                        }
                                        <td><a class="btn btn-sm" href="#" data-action="ShowPayTableModal" data-id="@item.Id" name="@item.Name">view</a></td>
                                        <td><a class="updateRate" data-id="@item">update</a></td>
                                    </tr>
                                }
</tbody>
现在我需要的是,当我点击更新按钮时,
model.technology的当前foreach值应该被传递到jquery中。目前我使用的是
数据id=@item
,但当我在控制台上记录时,该值仅显示TechnicianInvoiceViewModel。我的jquery代码是

 $(".updateRate").on("click", function () {
                var data = $(this).attr("data-id");
                console.log(data);
});

我该怎么做呢?

问题在于,您需要将C#模型解析为Javascript。 当您执行
data id=@item
时,会要求C#输入该项的字符串值。但是你期望这个值是什么呢?身份证?然后你应该选择
数据id=@item.id
。但是还有很多其他选项,例如,也可以通过实现
@item.getJSON()
返回JSON

长话短说:您需要指定要将项目的哪个值解析为JavaScript;)

    public class TechRateViewModel
    {
        public int Id { get; set; }
        public double Rate { get; set; }
    }
 $(".updateRate").on("click", function () {
                var data = $(this).attr("data-id");
                console.log(data);
});