MVC5 将值列表传递给 jquery var

MVC5 Pass list of values to jquery var

这可能是一个新手问题,但我只能找到相反的方向(从视图回到控制器)。

我有一个包含以下内容的 ViewModel 属性:

public class MyViewModel {
    List<decimal> PossibleValues {get; set; }
}

我现在想在视图中的 jquery 变量中使用这个值列表:

@model MyViewModel

<script>
    $(function() {

        var vals = @Model.PossibleValues;
        // should be var vals = [1.0, 2.0, 3.0];

    });
</script>

将这个小数列表传递到 jquery 部分的“正确”方法是什么。我可以想到 JSONfying 数据或简单地传递一串预格式化的值,但我想知道是否有更好的方法来做到这一点?

我不会简单地在你的 cshtml 文件中混合 JavaScript,因为它很容易变得一团糟,它还取决于模型中的数据类型,一种方法是通过在脚本部分的 cshtml 页面中仅使用变量,然后调用位于另一个地方的另一个脚本,从而使内容(HTML 和 JS)彼此分开。

根据您想要的数据类型,您可以执行以下操作:

<script type="text/javascript">
    var vals = @Html.Raw(Json.Encode(Model.PossibleValues));
</script>

<script type="text/javascript" src="@Url.Content("~/rootFolder/js/yourjsfile.js")"></script>

您也可以转到浏览器的控制台并输入 vals,您也可以仅尝试 Json.Encode 并查看结果,或者仅尝试 Html.Raw 以查看您的结果数据会是这样的。