0

次のシナリオがあります:

ノックアウト(バージョン2.1.0)とASP MVC.NETを使用しているので、ある特定のポイントで、コントローラーが新しいビューを呼び出します。このビューは、次の呼び出しで部分的なビューをレンダリングします。

<div id="productSeriesNonSocks">
    @{
    Html.RenderPartial("~/Views/SalesOrderManagement/GetAvailableProductSeriesNonSocks.cshtml", Model);
     }
</div>

コントローラーは、いくつかのプロパティを持つviewModel(Model)を使用してビューを呼び出したため、上記の呼び出しにより、モデル全体が部分ビューに送信されます。

部分ビューでは、次のような簡単な文でモデルのプロパティにアクセスできます。

Available season type: @Model.SeasonType

問題はここから始まります...部分ビューには独自のノックアウトモデルがあります。

<script type="text/javascript">
$(function () {
    //activates KO
    ko.applyBindings(productSeriesNonSocksModel);
    GetDataFromModels();
});

var productSeriesNonSocksModel = {
    AvailableProductSeriesNonSocks: ko.observableArray([]),
    selectedProdSeries: ko.observable(),
    seasonType: ko.observable()
};

function GetDataFromModels() {
    $.get('/SalesOrderManagement/GetAvailableProductSeriesNonSocks', { seasonType: this.seasonType() }, function (data) {
        productSeriesNonSocksModel.AvailableProductSeriesNonSocks(data.AvailableProductSeriesNonSocks);
    });
}

</script>

GetDataFromModels()関数は、適切な配列を取得してAvailableProductSeriesNonSocks配列に配置するために、seasonTypeをパラメーターとしてコントローラー内のメソッドを呼び出す必要があります。ここでの問題は、プロパティモデル(この場合は@ Model.SeasonType)からノックアウトモデルに値を渡して、コントローラー(productSeriesNonSocksModel.seasonType)の関数を呼び出す方法がわからないことです。

私は値を渡そうとしました:

seasonType: ko.observable(@Model.SeasonType)

また

seasonType: @Model.SeasonType

しかし、それは機能しません。$ .get(...)を使用して呼び出しを行うために、モデルプロパティ値をノックアウトプロパティ値に渡すアイデアはありますか?

明確にするために、その値(SeasonType)は前のビューでユーザーによって選択されたため、値を尋ねることはできません。

前もって感謝します。

4

1 に答える 1

1

スクリプトタグでかみそりを使用できます。

<script type="text/javascript">
    var seasonType = @Model.SeasonType;
    // do something with season type
</script>

追加のリクエストを避けることも理にかなっているかもしれません。「/SalesOrderManagement/ GetAvailableProductSeriesNonSocks」のデータをモデルまたはViewBagに配置し、JavaScriptオブジェクトとしてレンダリングできます。

于 2012-06-05T20:52:44.553 に答える