如何从javascript访问我的剃刀视图中的数据?

时间:2013-12-03 12:10:20

标签: javascript asp.net razor

在我的mvc razor视图中,我有以下代码:

@if (Model != null) {

       if (Model.Meals != null)
         {
    var grid = new WebGrid(Model.Meals, defaultSort: "MDate");

   double Total = Model.Meals.Where(x => x.FINtravelID == Model.FINtravelID).Sum( t =>t.MTAmount);

在脚本标题中,我需要在此代码中获取上面“Total”的数据:

$(function () {

            $("#grid tbody").append('<tr><td><b>Total</b></td><td><b>' + Total.toFixed(2) + '</b> </td></tr>');
    })

我试图在Total面前添加@,但它没有编译,有人知道如何让它工作吗?

1 个答案:

答案 0 :(得分:0)

除非将其嵌套在元素或隐藏的输入中,然后使用JS检索该数据,否则您将无法在代码块之外检索Total。因此,例如,如果您的代码如下所示:

@if (Model != null) 
{
    if (Model.Meals != null)
    {
        var grid = new WebGrid(Model.Meals, defaultSort: "MDate");

        double Total = Model.Meals.Where(x => x.FINtravelID == Model.FINtravelID).Sum( t =>t.MTAmount);
        <div id="Total">@Total</div>
    }
}

您可以使用JS获取数据,但是您需要将值转换为数字才能在其上使用isFixed()方法,因为JS隐式地键入字符串。所以使用Number()来转换string =&gt;双:

<script type="text/javascript">
$(function() {
    var total = Number(document.getElementById('Total').innerHTML).toFixed(2);

    $("#grid tbody").append('<tr><td><b>Total</b></td><td><b>' + total + '</b> </td></tr>');
});
</script>