1

私はasp.netmvc3-4.0を使用していますが、問題はモデル値を.jsファイルに渡す方法です。かみそりのビューページにjqueryの行をあまり多く入れたくない場合があります。

何か好きなもの

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

.jsファイルで動作させることは可能ですか?

ありがとう。

4

1 に答える 1

2

これを行うために私が見つけた最もクリーンな方法は、data-*属性を使用することです。

あなたのかみそりのビューで:

<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');
    // ... 
});

もう1つのオプションは、手続き型JavaScriptを外部ファイルに入れてから、Razorビューで1回のヒットで必要な設定だけをダンプすることです。

<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 に答える