1

我正在使用 asp.net mvc 3-4.0,问题是如何将模型值传递给 .js 文件。有时我不想在我的 razor 视图页面上放置太多 jquery 行。

喜欢的东西

 $("#qcontent").load(
                    "@Url.Action("QuestionList", "TuongTac")",
                {
                    id: 1,
                    keywords: @Model.keyword
                    ....
                }

是否可以使其在 .js 文件中工作?

谢谢。

4

1 回答 1

2

我发现最干净的方法是使用data-*属性。

在 Razor 视图中:

<div id="qcontent" data-url="@Url.Action("QuestionList", "TuongTac")" data-keyword="@Model.keyword"></div>

然后在您的外部 JavaScript 文件中:

$("#qcontent").each(function() {
    var url = $(this).data('url');
    var keyword = $(this).data('keyword');
    // ... 
});

另一种选择是将程序 JavaScript 放在一个外部文件中,然后在 Razor 视图中只转储一次点击所需的设置:

<script type="text/javascript">
    var qcontent.settings = @Json.Encode(new { url = Url.Action("QuestionList", "TuongTac"), keyword = @Model.Keyword });
</script>

并在您的 JavaScript 文件中引用它:

$("#qcontent").load(qcontent.settings.url, { id: 1, keyword: qcontent.settings.keyword });

这种方法的缺点是您污染了全局命名空间,因此您需要小心命名空间。

于 2012-12-05T03:37:58.650 回答